0

ラベル付きのテーブルを動的に作成し、ボタンをクリックしてテーブルのラベルを変更したい

テーブルにさまざまなラベルを動的に提供できますが、テーブルのラベルを変更することはできません

これが私のコードです:

.cs

protected ovverride void createchildcontrol()
{
    table1.border=1;
}

int counter=1;

for (int i = 1; i <= 8; i++)
{
    row = new htmltablerow();
    for (int j = 1; j <= 5; j++)
    {
        label = new label() { id = "label" + counter.tostring() };
        cell = new htmltablecell();
        cell.innertext = label.text = "label" + counter.tostring();
        row.cells.add(cell);
        counter++;
    }
table1.row.add(row);
}
counter = 1;
cell.controls.add(label);
this.controls.add(table1);
}

私のボタンコード

protected void button1_click(object sender, eventargs e)
{
    label find = cell.findcontrol("label1") as label;
    find.text = "changed"; 
}

id="placeholder" runatserver="server"私は他のページにdivを持っています

生成された HTML テーブルのラベルにアクセスする必要があります。

4

1 に答える 1

0

pre_initイベント時にテーブルを再作成する必要があります。そうして初めて機能します。

protected override void OnPreInit(EventArgs e)
{
   base.OnPreInit(e);
   //recreate your table here
}

Page Load イベントにもコントロールを動的に追加できます。ただし、その場合、コントロールの状態はポストバック間で保持できません。そのため、動的に追加されたコントロールは、ビュー ステートが読み込まれる前にページ コントロール階層内に存在する必要があります。そのため、Init イベントでコントロールを作成すると、ViewState を永続化できるように、コントロールが Hierarchy で使用できるようになります。

于 2014-10-13T04:50:24.203 に答える