グリッドビューに行を追加したい。テキストボックスの追加に成功しましたが、値を抽出できません。オブジェクト参照がオブジェクトのインスタンスに設定されていないことを通知し続けます。この行で停止します
string acc = Convert.ToString(((TextBox)GridView1.FooterRow.FindControl("accountID")).Text);
私が間違っていることをお願いします
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);
}
}
まず、フッター行かどうかを確認してから、その中に 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;