2009-10-02 91 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

相关问题