none
GridViewのセルに動的にコントロールを配置する方法 RRS feed

  • 質問

  • こんにちは。
    VS2005のASP.NET(C#)でWebアプリケーションを作成しています。
    GridViewのあるセルに、動的にラジオボタンを複数表示したいのですが、可能でしょうか?
    イメージは以下のようになります。

    R1 R2
    ------------------
    A ●A1○A2○A3
    B ○B1●B2
    C ○C1●C2○C3○C4

    現在、以下コードのように実装してみようとしていますが当然できません。
    TemplateField等を使って実装すれば出きるのでしょうか?
    GridViewのセルに、コントロールを動的生成設定するような、サンプル等はありませんでしょうか?

    <asp:GridView ID="GridView1" Runat="server"
      DataSource='<%# GetData() %>' AutoGenerateColumns="False" >
        <Columns>
            <asp:BoundField HeaderText="R1" DataField="R1">
            </asp:BoundField>
            <asp:BoundField HeaderText="R2" DataField="R2">
            </asp:BoundField>
        </Columns>
    </asp:GridView>

    protected void Page_Load(object sender, EventArgs e)
    {
        Page.DataBind();
    }
    public DataTable GetData()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add(new DataColumn("R1", typeof(string)));
        dt.Columns.Add(new DataColumn("R2"));
        // 4 つのレコードを作成します。
        DataRow dr = dt.NewRow();
        dr["R1"] = "A";
        dr["R2"] = ?;
        dt.Rows.Add(dr);
        dr = dt.NewRow();
        dr["R1"] = "B";
        dr["R2"] = ?;
        dt.Rows.Add(dr);
        dr = dt.NewRow();
        dr["R1"] = "C";
        dr["R2"] = ?;
        dt.Rows.Add(dr);
        dr = dt.NewRow();
        return dt;
    }


    2007年5月15日 7:12

回答

  • 自己レスです。
    asp:Tableを使用して動的にコントロールを作成する事が出来ました。
    下のコードを工夫すれば、やりたい機能を実現できそうです。


    <asp:Table ID="Table1" runat="server">
    </asp:Table>

    Table1.Rows.Clear();
    TableRow tRow = new TableRow();
    TableCell tCell = new TableCell();

    LiteralControl s = new LiteralControl();
    s.Text = "テスト";
    tCell.Controls.Add(s);

    RadioButton h = new RadioButton();
    h.Text = "A1";
    tCell.Controls.Add(h);
    RadioButton h2 = new RadioButton();
    h2.Text = "A2";
    tCell.Controls.Add(h2);

    tRow.Cells.Add(tCell);
    Table1.Rows.Add(tRow);


    2007年5月15日 8:05