C# 如何将组合框添加到asp.net未绑定的GridView
我想知道如何在运行时通过代码将ComboBox列添加到未绑定的GridView中。编程方式: 我使用了下面的类,但在过去用于实现ITemplate的下拉列表和复选框绑定C# 如何将组合框添加到asp.net未绑定的GridView,c#,asp.net,C#,Asp.net,我想知道如何在运行时通过代码将ComboBox列添加到未绑定的GridView中。编程方式: 我使用了下面的类,但在过去用于实现ITemplate的下拉列表和复选框绑定 public class AddTemplateToGridView : ITemplate { String columnName; public AddTemplateToGridView(String colname) { columnName = colname; }
public class AddTemplateToGridView : ITemplate
{
String columnName;
public AddTemplateToGridView(String colname)
{
columnName = colname;
}
void ITemplate.InstantiateIn(System.Web.UI.Control container)
{
if (columnName == "yourField")
{
ComboBox cb = new ComboBox();
cb.DataBinding += new EventHandler(cb_DataBinding);
container.Controls.Add(cb);
}
}
void cb_DataBinding(object sender, EventArgs e)
{
ComboBox cb = (ComboBox)sender;
GridViewRow container = (GridViewRow)cb.NamingContainer;
Object dataValue = DataBinder.Eval(container.DataItem, columnName);
if (dataValue != DBNull.Value)
{
// Assign ComboBox vals if necessary
... = dataValue
}
}
}
通过在codebehind中声明GridView和TemplateField来使用:
GridView newGrid = new GridView();
TemplateField field = new TemplateField();
field.HeaderText = "columnName";
field.ItemTemplate = // some item template
field.EditItemTemplate = new AddTemplateToGridView("yourField");
newGrid.Columns.Add(field);
或声明:
希望这能有所帮助。以编程方式:
我使用了下面的类,但在过去用于实现ITemplate的下拉列表和复选框绑定
public class AddTemplateToGridView : ITemplate
{
String columnName;
public AddTemplateToGridView(String colname)
{
columnName = colname;
}
void ITemplate.InstantiateIn(System.Web.UI.Control container)
{
if (columnName == "yourField")
{
ComboBox cb = new ComboBox();
cb.DataBinding += new EventHandler(cb_DataBinding);
container.Controls.Add(cb);
}
}
void cb_DataBinding(object sender, EventArgs e)
{
ComboBox cb = (ComboBox)sender;
GridViewRow container = (GridViewRow)cb.NamingContainer;
Object dataValue = DataBinder.Eval(container.DataItem, columnName);
if (dataValue != DBNull.Value)
{
// Assign ComboBox vals if necessary
... = dataValue
}
}
}
通过在codebehind中声明GridView和TemplateField来使用:
GridView newGrid = new GridView();
TemplateField field = new TemplateField();
field.HeaderText = "columnName";
field.ItemTemplate = // some item template
field.EditItemTemplate = new AddTemplateToGridView("yourField");
newGrid.Columns.Add(field);
或声明:
希望这能有所帮助。这样,在编辑行时,特定单元格的组合框将取代文本框出现。这样,在编辑行时,特定单元格的组合框将取代文本框出现。我无法实现这一点。从未为我的EditItemTemplate调用InstanceIn。但是,对于ItemTemplate,它可以工作…?结果是我不得不在RowUpdate事件中重新创建grd。然后它成功了,我没法让它成功。从未为我的EditItemTemplate调用InstanceIn。但是,对于ItemTemplate,它可以工作…?结果是我不得不在RowUpdate事件中重新创建grd。然后它成功了。