簡體   English   中英

如何從數據列表中獲取文本框值?

[英]How to get textbox value from datalist?

我正在使用數據列表顯示產品ID,名稱和一個允許用戶輸入訂單數量的文本框(“數量”)。 我得到了System.NullReferenceException:當用戶單擊要訂購的項目時,對象引用未設置為對象錯誤的實例。 我的數據源僅提供2列(產品ID和名稱)。 我在數據列表中添加了一個文本框(“數量”)和一個按鈕。 我無法從文本框(“數量”)中獲取值來提交。 難道是我的數據源不包含“ Qty”列,因此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?

}

您的處理程序看起來不正確。 您應該使用DataListCommandEventArgs作為第二個參數。 所以嘗試這樣的事情

標記:

<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"));
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM