4

現在、ASP テーブルがあります。このテーブルに行とセルを問題なく追加できます。私がやりたいのは、テキストを表示するだけのセルではなく、コントロールを追加したいということです。たとえば、ボタン。

今、これを行う方法について最初に考えたのは、テーブルセル<ASP:Button ...の属性としてを配置することです。.Ttextしかし、私の腸は、これはうまくいかないと私に言います。さらに、ボタンのクリックを処理する関数を追加できなかった可能性があります。

これを達成する方法について誰かが私を正しい方向に向けるのを助けることができますか?

4

3 に答える 3

5

テーブルセルにコントロールを追加する必要があります。セルでControls.Addメソッドを呼び出して、コントロールを追加するだけです。以下は、正しい方向を示す必要がある簡単なスケッチです。

        Button b = new Button();
        c.Controls.Add(b);
于 2012-02-01T22:04:09.920 に答える
2

以下は、いくつかの行が定義された空白の ASP:Table がページにあることを前提としています (実際に表示するためだけに)。

protected void Page_Init(object sender, EventArgs e)
{
    foreach (TableRow row in this.Table1.Rows)
    {
        foreach (TableCell cell in row.Cells)
        {
            Button btn = new Button();
            btn.Text = "Some Button";
            btn.Click += new EventHandler(btn_Click);
            cell.Controls.Add(btn);
        }
    }
}

void btn_Click(object sender, EventArgs e)
{
    ((Button)sender).Text = "Just Clicked";
}
于 2012-02-01T22:08:21.327 に答える
0

問題は、コントロールのソースが何であるかということにかかっています。これを実現するための最も効果的な方法は、データソースが単なる関数であっても、データバインディングを使用することです。Enumerable.Range()

それができない場合は、コントロールのインスタンスを作成し、それらが属するテーブルセルのコントロールのコレクションに追加する必要があり+=ます。イベントハンドラーを追加するための構文を使用できます。ここでの秘訣は、ボタンを作成して追加するコードは、ポストバックごとに再度実行する必要があり、asp.netライフサイクルのpage_loadフェーズの前に実行する必要があるということです。

于 2012-02-01T22:05:30.527 に答える