0

Page_Loadでグリッドビューにデータをバインドしてから、同じPage_Loadで、データバインディングの一部ではないチェックボックスの列を追加しています。

次に、ボタンが押されたときに、ボックスのいずれかがチェックされているかどうかを確認したいと思います。ただし、button_clickメソッドでチェックボックスを探すと、チェックボックスが完全に消えているように見えます。

私はそれらを探しています

foreach (GridViewRow gvr in GridView1.Rows)
{
   CheckBox cb = (CheckBox)gvr.FindControl("check" + gvr.Cells[2].Text);
   ...
}

ポストバックで破壊されるかもしれないという予感がありますが、これが起こらないようにする方法がわかりません。

私のPage_Loadメソッドのすべては、if(!IsPostBack)ステートメントに含まれています。

一部の人は私のpage_loadを求めました:

foreach (GridViewRow gvr in GridView1.Rows) {

                TableCell tc = new TableCell();

                CheckBox cb = new CheckBox();

                cb.ID = "check" + gvr.Cells[2].Text;

                tc.Controls.AddAt(0, cb);

                gvr.Cells.AddAt(0, tc);

            }

関連する部分だと思います。

4

1 に答える 1

3

動的コントロールを作成するときは、それらを作成するコード(つまり、チェックボックス)をではPage_Initなくに配置しPage_Loadます。また、チェックボックスが作成される順序とそれらが受け取るID
が各ポストバックで同じである ことを再確認する必要があります。 何らかの理由でポストバック間で変更があった場合は、チェックボックスをID化するより良いロジックを考える必要があります。
gvr.Cells[2].Text

于 2012-11-26T07:48:35.540 に答える