0

私はasp.netプロジェクトに取り組んでいます。グリッドビューがあり、rowdataboundに、行のすべてのセルにドロップダウンリストを配置したいと思います。だから私は次の方法があります。

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    DropDownList ddl = new DropDownList();
    ddl.DataSource = getImpacts();
    ddl.DataBind();
    if (e.Row.RowType != DataControlRowType.Header)
    {

        for (int i = 0; i < e.Row.Cells.Count; i++)
        {
            e.Row.Cells[i].Controls.Add(ddl);

        }
    }
}

問題は、dropdouwnlistが最後のセルにのみ追加されることです。デバッグすると、forループがすべてのセルから渡されます。これはどのように可能ですか?

4

2 に答える 2

1

列ごとにドロップダウンリストのインスタンスを作成する必要があります

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType != DataControlRowType.Header)
    {
        for (int i = 0; i < e.Row.Cells.Count; i++)
        {
           DropDownList ddl = new DropDownList();
           ddl.DataSource = getImpacts();
           ddl.DataBind();
           e.Row.Cells[i].Controls.Add(ddl);
        }
    }
}
于 2012-09-19T09:46:38.080 に答える
1

for のループに挿入し、セルごとに繰り返すことができます

        for (int i = 0; i < e.Row.Cells.Count; i++)
        {
           DropDownList ddl = new DropDownList();
           ddl.DataSource = getImpacts();
           ddl.DataBind();

           e.Row.Cells[i].Controls.Add(ddl);
        }
于 2012-09-19T09:48:21.093 に答える