为什么这段代码在我的ListView中找不到我的文本框?

时间:2009-10-02 14:08:59

标签: c# asp.net listview

我有一个带有EditTemplate的列表视图。如果我在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>

1 个答案:

答案 0 :(得分: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();
    }

  }