2

我正在使用编辑模板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当我获得dropdown价值时,价值是空的。

问题是什么?

文本框设计器:

<asp:TemplateField HeaderText = "Actual" >

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

</EditItemTemplate>
<ItemTemplate>               

</ItemTemplate>
</asp:TemplateField>
4

2 回答 2

2

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

if (e.Row.RowState == DataControlRowState.Edit )
 {
string actual = ((TextBox)OwnerGrid.Rows[e.RowIndex].FindControl("txtowneractual")).Text.Trim();
 }
于 2012-07-26T13:12:27.040 回答
1

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

并改用以下代码。

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

if(txtOwnerActual  != null)
{
       string actual = txtOwnerActual.Text.Trim();
}
于 2012-07-26T13:02:26.097 回答