私はデータリストを使用して製品ID、名前、およびテキストボックス(「数量」)を表示し、ユーザーが注文数量を入力できるようにしています。System.NullReferenceException: Object reference not set to an instance of an object エラーが発生しました。ユーザーが注文するアイテムをクリックしたときです。私のデータソースは 2 つの列 (製品 ID と名前) しか提供しません。データリストにテキストボックス("Qty")とボタンを追加しました。送信するテキストボックス("Qty")から値を取得できません。データソースに「Qty」列が含まれていないため、FindControl は常に null 値を返す可能性がありますか? 問題を解決するにはどうすればよいですか? ありがとう。これが私のコードです:
<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?
}