2009-10-02 40 views
1

我有一個EditTemplate的列表視圖。如果我在ListView有一個項目,下面的代碼會引發空異常:爲什麼這段代碼在我的ListView中找不到我的文本框?

if((TextBox)this.lvwColors.EditItem.FindControl("txtColor")) != null) 
{ 
    this.Color =  
    ((TextBox)this.lvwColors.EditItem.FindControl("txtColor")).Text.Trim(); 
} 

,如果我在我的列表視圖兩個項目它不會引發錯誤。

另一個奇怪的是它只在生產服務器上拋出一個錯誤,但是當我在本地測試時,我沒有收到錯誤。有誰知道爲什麼這種行爲可能存在?

這裏是標記EditTemplate部分:

<EditItemTemplate>   
    <asp:TextBox ID="txtColor" runat="server" 
       Text='<%# Eval("Color").ToString().Trim() %>' 
</EditItemTemplate> 
+0

請發表您更多的代碼 - 從上面的*全*線和它所引用的標記。 – 2009-10-02 14:13:40

+0

我更新了一些標記和代碼。 – Xaisoft 2009-10-02 14:19:47

+0

在我的答案中添加了GridView示例,請確認您是否使用GridView或ListView並相應地編輯您的問題。 – 2009-10-02 15:56:39

回答

1

ListView.ItemEditing Event

的ListView:

protected void yourListView_ItemEditing(Object sender, ListViewEditEventArgs e) 
    { 
    ListViewItem item = yourListView.Items[e.NewEditIndex]; 

    if((TextBox)item.FindControl("txtColor") != null) 
    { 
     this.Color =  
      ((TextBox)item.FindControl("txtColor")).Text.Trim(); 
    } 

    } 
+0

我沒有看到名爲ItemEditing的事件,它是否與RowEditing事件相同。 – Xaisoft 2009-10-02 15:42:25

+0

這裏是ListView事件的列表:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.aspx – 2009-10-02 15:47:38

+0

我認爲使用的是GridView而不是ListView – 2009-10-02 15:50:22

相關問題