我在我的gridview
中使用了修改模板来更新某些控制值,例如dropdowns
,textboxes
等。我在更新功能上找到了这些控件,如下所示:
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>
答案 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();
}