2015-02-05 85 views
0

我想從ItemEditing事件處理程序中的列表視圖中獲取編輯項目。當我嘗試使用此代碼獲取控件時:對象未設置爲對象的實例錯誤:ListView EditItem

TextBox JobDesTextBox = (TextBox)(LV_Tickets.EditItem.FindControl("JobDescTextBox")); 

我收到錯誤Object is not set to an instance of an object。我知道JobDescTextBox存在於EditItem模板中,因爲我在ItemCanceling事件中使用它。我在想這可能是拋出了這個錯誤,因爲在這個時候網站的控制權不存在,但我不知道如何解決這個問題。這是從ListView中EditItemTemplate的片段:

<asp:TextBox ID="JobDescTextBox" runat="server" Text='<%# Eval("JobDesc") %>' /> 

任何建議,將不勝感激。

+1

看看他的鏈接 - http://stackoverflow.com/questions/6152630/findcontrol-listview-edit-nullreferenceexception – MethodMan 2015-02-05 16:07:43

+0

好吧,我試過那傢伙建議,但是當我嘗試設置文本框的文本不行。沒有錯誤拋出,但它沒有設置它。 – 2015-02-05 16:12:19

+0

你可以顯示你正在使用的代碼來描述你剛纔陳述的..所以我們可以看到..? – MethodMan 2015-02-05 16:13:22

回答

1

@ MethodMan的帖子後,我能夠解決我的問題。我將編輯索引設置爲正確的並重新綁定列表視圖。

LV_Tickets.EditIndex = e.NewEditIndex; 
LV_Tickets.DataBind(); 

爲了設置文本框的值,並沒有得到存儲在數據庫中的值,我不得不取消使用e.Cancel = true;

最終代碼看起來像這樣的編輯事件:

LV_Tickets.EditIndex = e.NewEditIndex; 
LV_Tickets.DataBind(); 
e.Cancel = true; 
TextBox JobDesTextBox = (TextBox)(LV_Tickets.EditItem.FindControl("JobDescTextBox")); 
JobDesTextBox.Text = "Setting the textbox";  
相關問題