1

グリッドビューに行を追加したい。テキストボックスの追加に成功しましたが、値を抽出できません。オブジェクト参照がオブジェクトのインスタンスに設定されていないことを通知し続けます。この行で停止します

string acc = Convert.ToString(((TextBox)GridView1.FooterRow.FindControl("accountID")).Text);

私が間違っていることをお願いします

4

2 に答える 2

1
  1. 文字列を文字列に変換する必要はありません(TextBox.Textすでに文字列を返します)。

TextBoxをフッター行にどのように、どこに追加しましたか?

のフッター行に TextBox を追加しましたGridView1_RowDataBound

RowDataBoundすべてのポストバックではなく、データバインディングでのみ呼び出されるため、動的コントロールの正しい方法ではありません。ただし、ポストバックごとに動的コントロールを再作成する必要があります。

そのため、RowCreated代わりにコントロールを動的に作成し、RowDataBoundそれらをデータバインドするために使用します。

protected void GridView1_RowCreated(Object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.Footer)
    {
        TextBox tb = new TextBox();
        tb.ID = "accountID";
        e.Row.Cells[indexOfColumn].Controls.Add(tb);
    }
}
于 2012-11-26T15:49:17.057 に答える
0

まず、フッター行かどうかを確認してから、その中に textBox を見つけます

protected void grdAccounts_RowDataBound(object sender, GridViewRowEventArgs e)
{
  if (e.Row.RowType == DataControlRowType.Footer)
  {
   //get text box value here
  }
}

ボタンクリックで

これを試して

GridViewRow row = GridView1.FooterRow; 
firstName = ((TextBox)row.FindControl("TextBox1")).Text;
于 2012-11-26T15:56:15.063 に答える