1
我正在使用datalist顯示產品ID,名稱和文本框(「數量」)允許用戶輸入訂單數量。我得到System.NullReferenceException:當用戶單擊要訂購的項目時,對象引用未設置爲對象錯誤的實例。我的數據源只提供2列(產品ID和名稱)。我向數據專家添加了一個文本框(「數量」)和一個按鈕。我無法從文本框中獲取值(「數量」)來提交。難道它是我的數據源不包含「數量」列,因此FindControl總是返回空值?我如何解決這個問題?謝謝。這裏是我的代碼:如何從datalist獲取文本框的值?
<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?
}
我CS0123:爲 'DataList1_ButtonAddToCartCommand' 不超載在使用代碼時與委託「System.Web.UI.WebControls.CommandEventHandler」匹配。 – user1698255 2013-04-25 01:30:23
確保'DataList1_ButtonAddToCartCommand'具有同名的兩個位置,即標記和後面的代碼。看看這裏http://www.codeproject.com/Questions/217748/DataList1_ItemCommand-not-raised – Sachin 2013-04-25 01:34:29
現在我得到了CS0123:沒有重載'DataList1_ItemCommand'匹配委託'System.Web.UI.WebControls.CommandEventHandler'後驗證在上面的代碼中,我在這兩個地方都有DataList1_ItemCommand。 – user1698255 2013-04-25 01:57:22