C# 将Dropdownlist从codebehind添加到gridview列
我正在尝试将dropdownlist添加到我的gridview中的列中。我有这样的想法:C# 将Dropdownlist从codebehind添加到gridview列,c#,asp.net,C#,Asp.net,我正在尝试将dropdownlist添加到我的gridview中的列中。我有这样的想法: DataTable dt = new DataTable(); DataColumn dc = new DataColumn(); if (dt.Columns.Count == 0) { dt.Columns.Add("Names", typeof(string)); dt.Columns.Add("Sele
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);
我犯了一种错误。有人能帮我吗
谢谢 我认为您无法向DataTable添加控件,请尝试处理gridview的DataBound操作,并在GridView1.rows循环中使用foreachGridviewRow r进行迭代,将控件添加到gridview的任意单元格中
//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);
}
}
一种简单的方法是,创建一个用户控件来控制所需内容,并将其加载为模板字段。 但每次页面加载时,此模板字段都会清除,因此您需要它来创建每次页面加载
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);
}
}
dt.Columns.AddSelection,typeofstring;我认为这就是问题所在。gridview不显示dropdownlist,它显示控件名称的字符串,如:System.Web.UI.WebControls.ListItemCollection。应该显示控件。如果这样做,您不能添加dropdownlist,您需要创建一个模板字段并将其动态添加到gridview。为什么不在aspx页面中添加dropdown?我想也许可以在codebehind中添加。但你是对的。我可以在前端完成这项工作。在代码隐藏中完成这项工作是可能的,但是看到您正在向DataRow添加控件,那么现在想想如何在GridView中添加控件?您创建了一个模板字段,对吗?因此,您可以创建一个模板字段并动态添加它,但如果没有复杂性或需要,我认为更好或更明智的方法是在aspx页面中进行。我发布了一个我曾经做过的例子。希望它对您有用。这一个有效,但是带有dropdownlist的新列显示在gridview的左侧,在dt.Columns.AddNames,typeofstring;之前;。你知道如何让它消失在右边吗,在我第一列的名字之后?我不知道你想要什么,你是说你想让下拉列表出现在左边?所以只需更改r.Cells[索引到您希望它出现的位置]查看编辑。