C# 如何从数据列表中获取文本框值?

C# 如何从数据列表中获取文本框值?,c#,asp.net,datalist,findcontrol,C#,Asp.net,Datalist,Findcontrol,我使用datalist显示产品id、名称和一个文本框(“数量”),允许用户输入订单数量。我得到System.NullReferenceException:当用户单击要订购的项目时,对象引用未设置为对象错误的实例。我的数据源只提供2列(产品id和名称)。我在数据列表中添加了一个文本框(“数量”)和一个按钮。我无法从文本框(“数量”)中获取要提交的值。可能是因为我的数据源不包含“数量”列,因此FindControl始终返回空值?我如何解决这个问题?谢谢这是我的密码: <asp:DataList

我使用datalist显示产品id、名称和一个文本框(“数量”),允许用户输入订单数量。我得到System.NullReferenceException:当用户单击要订购的项目时,对象引用未设置为对象错误的实例。我的数据源只提供2列(产品id和名称)。我在数据列表中添加了一个文本框(“数量”)和一个按钮。我无法从文本框(“数量”)中获取要提交的值。可能是因为我的数据源不包含“数量”列,因此FindControl始终返回空值?我如何解决这个问题?谢谢这是我的密码:

<asp:DataList ID="DataList1" runat="server" CellPadding="10" DataKeyField="product_id" DataSourceID="SqlDataSource1" RepeatColumns="2">
 <ItemTemplate>
  <asp:Label ID="product_id" runat="server" 
     Text='<%# Eval("product_id") %>' /><br/>
  <asp:Label ID="product_name" runat="server" 
     Text='<%# Eval("product_name") %>' />
 <br />

<asp:TextBox ID="Qty" runat="server"></asp:TextBox>
<asp:Button ID="ButtonAddToCart" runat="server" Text="Add to Cart" CommandName="addtocart2"   OnCommand="DataList1_ItemCommand"
    />  
</ItemTemplate>
</asp:DataList>

您的处理程序看起来不正确。您应该使用
DataListCommandEventArgs
作为第二个参数。所以试试这样吧

标记:

<asp:DataList ID="DataList1" runat="server" OnItemCommand="DataList1_ItemCommand" vCellPadding="10" DataKeyField="product_id" DataSourceID="SqlDataSource1" RepeatColumns="2">

我得到CS0123:DataList1_ButtonAndToCartCommand“匹配委托”System.Web.UI.WebControl.CommandEventHandler“在使用代码时没有重载。确保
DataList1_ButtonAndToCartCommand
使用相同的名称,即标记上和代码后面。现在看看这里,我得到了CS0123:DataList1_ItemCommand与委托“System.Web.UI.WebControl.CommandEventHandler”匹配没有重载,在验证我在上述代码中的两个位置都有DataList1_ItemCommand之后。您需要在datalist属性中定义`OnItemCommand=“DataList1_ItemCommand”。你已经在巴顿的财产上做了。
<asp:DataList ID="DataList1" runat="server" OnItemCommand="DataList1_ItemCommand" vCellPadding="10" DataKeyField="product_id" DataSourceID="SqlDataSource1" RepeatColumns="2">
<asp:Button ID="ButtonAddToCart" runat="server" Text="Add to Cart" CommandName="addtocart2" />  
public void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
  if(e.CommandName.Equals("addtocart2")
  {
    TextBox qtytxtbox = (TextBox)(e.Item.FindControl("Qty"));
  }
}