将下拉列表从代码隐藏添加到网格视图列

本文关键字:网格 视图 添加 隐藏 下拉列表 代码 | 更新日期: 2023-09-27 17:55:36

我试图将下拉列表添加到我的网格视图中的列中。我有这样的东西:

DataTable dt = new DataTable();
        DataColumn dc = new DataColumn();
        if (dt.Columns.Count == 0)
        {
            dt.Columns.Add("Names", typeof(string));
            dt.Columns.Add("Selection", typeof(string));
        }
 DropDownList ddlSelection= new DropDownList();
        ddlSelection.Items.Add(new ListItem("one"));
        ddlSelection.Items.Add(new ListItem("two"));

DataRow NewRow = dt.NewRow(); 
NewRow[0] = lblname.Text;
NewRow[1] = ddlSelection.Items;
dt.Rows.Add(NewRow);

我收到一种类型的错误。有人可以帮助我吗?

谢谢!

将下拉列表从代码隐藏添加到网格视图列

一种简单的方法是,创建所需内容的用户控件并将其加载为模板字段。但是此模板字段将在每次页面加载时清除,因此您需要它来创建每次页面加载。

foreach (DataRow dr in dt.Rows)
          {
                int index = dt.Rows.IndexOf(dr);
                 if(index =1)
            {
                TemplateField tF = new TemplateField();
                tF.HeaderText = dr["COLUMN_NAME"].ToString();
                tF.ItemTemplate = LoadTemplate("/xxxxxx.ascx");
                GridView1.Columns.Add(tF);
            }
         }

我认为您无法将控件添加到数据表中,请尝试处理网格视图的 DataBound 操作并使用 foreach(GridView1.rows 中的 GridviewRow r)循环进行迭代,将控件添加到网格视图的任何单元格。

 //edit:    
     protected void Page_Load(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();
        DataColumn dc = new DataColumn();
        if (dt.Columns.Count == 0)
        {
            dt.Columns.Add("Selection", typeof(string));
            dt.Columns.Add("Names", typeof(string));
        }
        DropDownList ddlSelection = new DropDownList();
        ddlSelection.Items.Add(new ListItem("one"));
        ddlSelection.Items.Add(new ListItem("two"));
        for(int i= 0; i < 10; i++)
        {
            DataRow NewRow = dt.NewRow();
            NewRow[1] = "dropdownlist"+i;
            dt.Rows.Add(NewRow);
        }
        GridView1.DataSource = dt;
        GridView1.DataBind();
    }
    protected void GridView1_DataBound(object sender, EventArgs e)
    {
        foreach (GridViewRow r in GridView1.Rows)
        {
            DropDownList ddlSelection = new DropDownList();
            ddlSelection.Items.Add(new ListItem("one"));
            ddlSelection.Items.Add(new ListItem("two"));
            r.Cells[0].Controls.Add(ddlSelection);
        }
    }