DropDownList如何动态绑定到DetailsView字段 因为数据库表中字段数的不确定,我需要使用DetailsView控件动态生成模板列,在模板列中使用DropDownList控件来显示可选择的值列表。现在DropDownList的列表值已经显示正确,但是保存的时候没办法保存到数据库中。因为模板列是动态生成的,所以不能像在设计视图中使用SelectValue='<%#Bind(字段)%>'的方式来进行绑定。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 使用生成HTML代码不就又回到ASP去了 下面是列模板的类,使用时可能正常显示出下拉列表,但是保存时只会保存一个空值,请高手帮我看看哪里还有问题 public class DDLTemplete : IBindableTemplate { string columnName = "/"; DataSet ds = null; public DDLTemplete(string colname,DataSet dsList) { columnName = colname; ds = dsList; } public void InstantiateIn(Control container) { DropDownList ddl = new DropDownList(); ddl.ID = "droplist"; ddl.Items.Clear(); foreach (DataRow dr in ds.Tables[0].Rows) { ddl.Items.Add(new ListItem(dr["itmName"].ToString())); } ddl.DataBinding+=new EventHandler(this.OnDataBinding); container.Controls.Add(ddl); } public IOrderedDictionary ExtractValues(Control container) { DropDownList ddl = (DropDownList)container.FindControl("droplist"); OrderedDictionary dictionary = new OrderedDictionary(); if (ddl != null) { dictionary[columnName] = ddl.SelectedValue; } return dictionary; } public void OnDataBinding(object sender, EventArgs e) { DropDownList ddl = (DropDownList)sender; DetailsView dv = (DetailsView)ddl.NamingContainer; DataRowView drv = (DataRowView)dv.DataItem; if (drv != null) { string value = drv[columnName].ToString(); ddl.SelectedIndex = ddl.Items.IndexOf(ddl.Items.FindByValue(value)); } } } 文本信息转换成流 用户控件继承问题!在线等 定义参数数组的写法,估计很简单,就是没搞定 asp.net控件无法显示 用httpwebrequest访问一个页面,如何在被访问页面记录访问者的url? 用ASP.NET做过音乐系统的近来看哈!! 如何声明页面的对象 问一个很菜的问题,请各兄弟帮忙 紧急求救:如何固定datagrid的header的高度????!!!!! 关于WEB线程问题,为什么线程会少呢? 什么意思? ASP.NET验证问题,请同行们解决下?
public class DDLTemplete : IBindableTemplate
{
string columnName = "/";
DataSet ds = null;
public DDLTemplete(string colname,DataSet dsList)
{
columnName = colname;
ds = dsList;
} public void InstantiateIn(Control container)
{
DropDownList ddl = new DropDownList();
ddl.ID = "droplist";
ddl.Items.Clear();
foreach (DataRow dr in ds.Tables[0].Rows)
{
ddl.Items.Add(new ListItem(dr["itmName"].ToString()));
}
ddl.DataBinding+=new EventHandler(this.OnDataBinding);
container.Controls.Add(ddl);
} public IOrderedDictionary ExtractValues(Control container)
{
DropDownList ddl = (DropDownList)container.FindControl("droplist");
OrderedDictionary dictionary = new OrderedDictionary();
if (ddl != null)
{
dictionary[columnName] = ddl.SelectedValue;
}
return dictionary;
}
public void OnDataBinding(object sender, EventArgs e)
{
DropDownList ddl = (DropDownList)sender;
DetailsView dv = (DetailsView)ddl.NamingContainer;
DataRowView drv = (DataRowView)dv.DataItem;
if (drv != null)
{
string value = drv[columnName].ToString();
ddl.SelectedIndex = ddl.Items.IndexOf(ddl.Items.FindByValue(value));
}
}
}