将下拉列表从代码隐藏添加到网格视图列
本文关键字:网格 视图 添加 隐藏 下拉列表 代码 | 更新日期: 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);
}
}