2013-07-04 46 views
0

編碼我有3列empName, bonus, Id無法找到.FindControl而在RowUpdating事件

我想要實現在gridview的編輯功能的網格。

對於我走進editTemplates並添加3個文本框:

<EmptyDataTemplate> 
       <asp:TextBox ID="txtEmpName" runat="server"></asp:TextBox> 
       <asp:TextBox ID="txtBonus" runat="server"></asp:TextBox> 
       <asp:TextBox ID="txtID" runat="server"></asp:TextBox> 
</EmptyDataTemplate> 

我指的THIS doccument的代碼。

根據這個我試着寫類似的代碼:

TextBox txtUname = (TextBox)gv.DataKeys[e.RowIndex].FindControl("txtEmpName"); 

(TextBox)gv.DataKeys[e.RowIndex].之後它沒有顯示我FindControl

是否有我按照此過程中的步驟的任何錯誤?

請幫幫我。

回答

2
TextBox txtUname = (TextBox)gv.DataKeys[e.RowIndex].FindControl("txtEmpName"); 

改用行作爲

TextBox txtUname = (TextBox)gv.Rows[e.RowIndex].FindControl("txtEmpName"); 

而且它應該是"EditItemTemplate"代替"EmptyDataTemplate"

+0

與項模板應該是隻完成一個文本框?,除了編輯按鈕,除了編輯按鈕之外,還有一個文本框正在編輯,而我想在編輯按鈕時識別列上的文本框。 –

+0

如果您處於EditMode,則會出現EditTemplete。如果你想默認TextBox,你可以在ItemTemplate中創建任意數量的文本框。最終,如果控件存在於相應的模板中,則可以從Row中找到控件。請參閱這兩個教程以獲取有關模板的更多信息1)http://msdn.microsoft.com/en-us/library/bb288031.aspx 2)http://msdn.microsoft.com/en-us/library/aa479353。 aspx – Bhaarat

+0

謝謝,我正在嘗試更進一步。如果關於同一問題有任何疑問,我會加評論 –

1

的DataKeys和的DataKeyNames用於您在GridView控件定義存儲值。 什麼,你只需要爲

TextBox txtUname = (TextBox)gv.Rows[e.RowIndex].FindControl("txtEmpName"); 

如果你想知道更多DataKeys如何被用來嘗試谷歌或看看這個例子:

http://www.dotnetcurry.com/ShowArticle.aspx?ID=291

+0

但我想問,這是這個文本框'txtEmpName'?這是我在EmptyDataTemplate中添加的嗎? –

+0

在我的回覆帖子中的評論中找到您的答案 – Bhaarat