无法更新Gridview中文本框的值:对象引用未设置为对象的实例

时间:2012-07-26 12:55:28

标签: asp.net gridview

我在我的gridview中使用了修改模板来更新某些控制值,例如dropdownstextboxes等。我在更新功能上找到了这些控件,如下所示:

string dd1 = ((DropDownList)OwnerGrid.Rows[e.RowIndex].FindControl("ddl1")).SelectedItem.Text.Trim();

string actual = ((TextBox)OwnerGrid.Rows[e.RowIndex].FindControl("txtowneractual")).Text.Trim();

我已经绑定了我在更新前选择项目的下拉菜单。我也在更新前填写文本框。文本框没有绑定。

当我点击更新时,它会抛出“Object reference not set to instance of an object”错误。我调试了代码,textbox值为null,而我的值为dropdown

问题是什么?

文本框设计器:

<asp:TemplateField HeaderText = "Actual" >

<EditItemTemplate>
                <asp:TextBox ID="txtowneractual" Width="80px" runat="server" ></asp:TextBox>                  

</EditItemTemplate>
<ItemTemplate>               

</ItemTemplate>
</asp:TemplateField>

2 个答案:

答案 0 :(得分:2)

我认为您的文本框位于“编辑项目”模板中,因此您将获得空引用异常。试试这样的事情

if (e.Row.RowState == DataControlRowState.Edit )
 {
string actual = ((TextBox)OwnerGrid.Rows[e.RowIndex].FindControl("txtowneractual")).Text.Trim();
 }

答案 1 :(得分:1)

检查文本框的ID是否为“txtowneractual”。

请改用以下代码。

TextBox txtOwnerActual = (TextBox)OwnerGrid.Rows[e.RowIndex].FindControl("txtowneractual");

if(txtOwnerActual  != null)
{
       string actual = txtOwnerActual.Text.Trim();
}