c#数据表试验

c#数据表试验,c#,asp.net,datatable,C#,Asp.net,Datatable,我有一个ASP.NET数据表,我从另一组ASP:TextBox字段中填充该表以存储,然后在单击“添加”按钮时将其批量插入到数据库中。我将System.Web.UI.WebControls.TextBox添加到数据表中,而不是我在字段中输入的数据。有人能告诉我这里的错误吗 代码 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TestDataTable._Default"

我有一个ASP.NET数据表,我从另一组ASP:TextBox字段中填充该表以存储,然后在单击“添加”按钮时将其批量插入到数据库中。我将System.Web.UI.WebControls.TextBox添加到数据表中,而不是我在字段中输入的数据。有人能告诉我这里的错误吗

代码

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TestDataTable._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
<form id="form1" runat="server">
  <legend>Add New Order
    <div>
    <fieldset style="height:200px;">
    <asp:Label ID="lblTips" runat="server" ForeColor="White" BackColor="Red" Width="100%" />
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            Width="100%" CellPadding="4" EmptyDataText="There is no any data." 
            ForeColor="#333333" EnableModelValidation="True" GridLines="None">
            <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
            <Columns>
                <asp:BoundField DataField="id" HeaderText="ID" Visible="False" />
                <asp:BoundField DataField="AccountRef" HeaderText="Account #" />
                <asp:BoundField DataField="InvRef" HeaderText="Invoice Ref" />
                <asp:BoundField DataField="CustOrderNo" HeaderText="Order Number" />
                <asp:BoundField DataField="Product" HeaderText="Product" />
                <asp:BoundField DataField="Qty" HeaderText="Qty" />
                <asp:BoundField DataField="UnitAmount" HeaderText="Unit Amount" />
                <asp:BoundField DataField="Value" HeaderText="Line Total" />
                <asp:BoundField DataField="TakenBy" HeaderText="Taken By" />
            </Columns>
            <EditRowStyle BackColor="#999999" />
            <FooterStyle BackColor="#5D7B9D" ForeColor="White" Font-Bold="True" />
            <RowStyle ForeColor="#333333" BackColor="#F7F6F3" />
            <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
            <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
            <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        </asp:GridView>
        <br />
        <asp:Table ID="Table1" runat="server" Height="50px" Width="100%" 
            ForeColor="#333333" GridLines="None">
        <asp:TableHeaderRow EnableTheming="true" BackColor="#5D7B9D" Font-Bold="True" ForeColor="White">
            <asp:TableHeaderCell>Account Ref:</asp:TableHeaderCell>
            <asp:TableHeaderCell>Invoice Ref</asp:TableHeaderCell>
            <asp:TableHeaderCell>Customer Order #</asp:TableHeaderCell>
            <asp:TableHeaderCell>Product</asp:TableHeaderCell>
            <asp:TableHeaderCell>Qty</asp:TableHeaderCell>
            <asp:TableHeaderCell>Unit Amount</asp:TableHeaderCell>
            <asp:TableHeaderCell>Value</asp:TableHeaderCell>
            <asp:TableHeaderCell>Taken By</asp:TableHeaderCell>
        </asp:TableHeaderRow>
        <asp:TableRow ForeColor="#333333" BackColor="#F7F6F3">
            <asp:TableCell><asp:TextBox ID="txtAccountRef" runat="server"></asp:TextBox></asp:TableCell>
            <asp:TableCell><asp:TextBox ID="txtInvoiceRef" runat="server"></asp:TextBox ></asp:TableCell>
            <asp:TableCell><asp:TextBox ID="txtCustOrderNo" runat="server"></asp:TextBox></asp:TableCell>
            <asp:TableCell><asp:TextBox ID="txtProduct" runat="server"></asp:TextBox></asp:TableCell>
            <asp:TableCell><asp:TextBox ID="txtQty" runat="server"></asp:TextBox></asp:TableCell>
            <asp:TableCell><asp:TextBox ID="txtUnitAmount" runat="server"></asp:TextBox></asp:TableCell>
            <asp:TableCell><asp:TextBox ID="txtValue" runat="server"></asp:TextBox></asp:TableCell>
            <asp:TableCell><asp:TextBox ID="txtTakenBy" runat="server"></asp:TextBox></asp:TableCell>
            <asp:TableCell><asp:Button ID="btnAdd" runat="server" Text="Add" OnClick="btnAdd_Click" /></asp:TableCell>
        </asp:TableRow>
        </asp:Table> 
    </fieldset>
    </div>
  </legend>  
</form>
</body>
</html>
提前谢谢!
Justin

您忘记了
.Text
属性;使用它指定控件的文本:

row["AccountRef"] = txtAccountRef.Text;
        row["InvRef"] = txtInvoiceRef.Text;
        row["CustOrderNo"] = txtCustOrderNo.Text;
        row["Product"] = txtProduct.Text;
        row["Qty"] = txtQty.Text;
        row["UnitAmount"] = txtUnitAmount.Text;
        row["Value"] = txtValue.Text;
        row["TakenBy"] = txtTakenBy.Text;

您的问题是您的
AddDataToTable()
方法。您可以这样定义该函数的参数:

字符串AccountRef

然后将值指定给一行,如下所示:

行[“AccountRef”]=txtAccountRef

看到区别了吗?第二个摘录是使用页面上的控件,而不是您传入的参数。您应该将其更改为如下所示:

行[“AccountRef”]=AccountRef


仍在研究您的问题,但作为旁白,我看到您将数据表保留在会话中。当用户单击“添加”时,直接将行发送到数据库,而不是批量插入,这可能会更加有效。在每次会话中保持这样一张表的内存消耗可能会反过来影响你。贾斯汀,你从哪里得到这个代码的?我不想让你失望——我想帮助你,但这段代码有太多问题,我不知道从哪里开始。@MikeEast我是这个c#thingy;的新手)我是从有更好的方法吗?你链接到的文章有点过时,因为它首先使用的是
DataTable
,但它的实现也是根本错误的。参考更多更新的教程,他不应该分配传递到方法中的值吗?@muhammad akhtar您能告诉我如何为下拉列表选项执行此操作吗,即“row[“Product”]=txtProduct.Value;”或者其他什么?如果您的产品有下拉列表,那么它将是'row[“product”]=ProductDropdownID.SelectedValue;'感谢您在我尝试获取以下“txtProduct”时使用的SelectedValue无效,因为它不在项目列表中。参数名称:value
row["AccountRef"] = txtAccountRef.Text;
        row["InvRef"] = txtInvoiceRef.Text;
        row["CustOrderNo"] = txtCustOrderNo.Text;
        row["Product"] = txtProduct.Text;
        row["Qty"] = txtQty.Text;
        row["UnitAmount"] = txtUnitAmount.Text;
        row["Value"] = txtValue.Text;
        row["TakenBy"] = txtTakenBy.Text;