2

編集テンプレートを使用して、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を取得している間、値はnulldropdownです。

どうした ?

テキストボックスのデザイナー:

<asp:TemplateField HeaderText = "Actual" >

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

</EditItemTemplate>
<ItemTemplate>               

</ItemTemplate>
</asp:TemplateField>
4

2 に答える 2

2

テキストボックスが[アイテムの編集]テンプレートにあるため、null参照例外が発生していると思います。このようなことを試してみてください

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 に答える