我正在使用数据列表来显示产品 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>
这是按钮的代码:
public void DataList1_ItemCommand(object source, System.Web.UI.WebControls.CommandEventArgs e)
{
var qtytxtbox = DataList1.FindControl("Qty") as TextBox;
// qtytxtbox always return null, why?
}