有做过内置数据库绑定控件的用户来讨论一下,关于在DataGrid的编辑模板中套用一个DropDownList控件。 关于在DataGrid的编辑模板中套用一个DropDownList控件,而DropdownList的数据源不是自己手动添加的一些项。而是数据库中读取出来的。 怎样能够使得,DropDownList能够绑定到数据啊。要设置什么属性啊。 谢谢!大家的参与。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 o = document.getElementById("DropDownList1")var a = new Array("1","2")for(i = 0;i<a.length;i++)o.options[o.options.length] = new Option(a[i],a[i]) 可以在ItemDataBound 的方法中进行这个 步骤 aspx:<EditItemTemplate> <asp:DropDownList id="DropDownList1" runat="server"></asp:DropDownList> </EditItemTemplate>cs:为DataGrid添加ItemDataBound事件private void DataGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) { if(e.Item.ItemType==ListItemType.EditItem) { DataSet myDs=SqlHelper.ExecuteDataset(MyGet.GetConnString(),CommandType.Text,"select * from TB_Role"); DropDownList ddl=(DropDownList)e.Item.FindControl("DropDownList1"); ddl.DataSource=myDs.Tables[0]; ddl.DataTextField="RoleDesc"; ddl.DataValueField="RoleValue"; ddl.DataBind(); ddl.SelectedValue=Convert.ToString(DataBinder.Eval(e.Item.DataItem,"RoleValue")); //ddl.Items.FindByValue(Convert.ToString(DataBinder.Eval(e.Item.DataItem,"RoleValue"))).Selected=true;//选择数据库内的作为默认 } }这是我用过的例子 如果每一行的DropDownList的值都不同,可以把DropDownList放在一个WebUserControl中。WebUserControl对外做一个属性就是你要查询的条件字段,DataGrid绑定时绑定WebUserControl的这个属性,这样就可以在WebUserControl中给DropDownList付值。WebUserControl中的这个属性字段需要放在ViewStart中保存。 页面上的模版列中添加id=dropdown的服务段dropdownlist给dataGrid添加ItemDataBound事件private void dataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e) { System.Web.UI.WebControls.DropDownList drop = (System.Web.UI.WebControls.DropDownList)e.Item.FindControl("dropDown"); drop.DataSource = GetData();drop.DataTextField = "Name"; drop.DataValueField = "ID";drop.DataBind(); }GetData表示取出所要绑定的数据,DataTextField表示要显示在Dropdown的字段,DataValueField表示DropDown的实际字段. GetData里面的查询条件如果是DataGrid的数据集的一项,可以通过以下代码取到{ DataRow row = (DataRow)e.Item.DataItem;} <EditItemTemplate> <asp:DropDownList id="DropDownList1" runat="server"></asp:DropDownList> </EditItemTemplate>cs:为DataGrid添加ItemDataBound事件private void DataGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) { if(e.Item.ItemType==ListItemType.EditItem) { DataSet myDs=SqlHelper.ExecuteDataset(MyGet.GetConnString(),CommandType.Text,"select * from TB_Role"); DropDownList ddl=(DropDownList)e.Item.FindControl("DropDownList1"); ddl.DataSource=myDs.Tables[0]; ddl.DataTextField="RoleDesc"; ddl.DataValueField="RoleValue"; ddl.DataBind(); ddl.SelectedValue=Convert.ToString(DataBinder.Eval(e.Item.DataItem,"RoleValue")); //ddl.Items.FindByValue(Convert.ToString(DataBinder.Eval(e.Item.DataItem,"RoleValue"))).Selected=true;//选择数据库内的作为默认 } }这是我用过的例子 DropDownList dd= (DropDownList)e.Item.FindControl("dd"); dd.DataSource = GetData();dd.DataTextField = "Name"; dd.DataValueField = "ID";dd.DataBind(); 如果每个DropDownList绑定的数据源是一样的话,在ItemCreated也可以 DEV控件 ASPxGridView的问题 ASP.NET datalist删除多条记录问题 关于JQuery的一个小问题,就是搞不明白了,求指教... 请教一个IE版本判断的问题? 获得自动生成的控件的ID 麻烦大家,一个问题,关于按时间查询 如何在DataGrid上捕捉鼠标事件 菜鸟:treeview怎么获取父节点的ID值??帮帮忙 如何在Calendar的日期下面加入文字 关于 HtmlInputFile 控件的“文件类型”问题,急!! 我的.net 导excel的问题 高手进来帮帮忙! 怎样用javacript控制打印的格式
var a = new Array("1","2")
for(i = 0;i<a.length;i++)
o.options[o.options.length] = new Option(a[i],a[i])
<EditItemTemplate>
<asp:DropDownList id="DropDownList1" runat="server"></asp:DropDownList>
</EditItemTemplate>
cs:
为DataGrid添加ItemDataBound事件
private void DataGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType==ListItemType.EditItem)
{
DataSet myDs=SqlHelper.ExecuteDataset(MyGet.GetConnString(),CommandType.Text,"select * from TB_Role");
DropDownList ddl=(DropDownList)e.Item.FindControl("DropDownList1");
ddl.DataSource=myDs.Tables[0];
ddl.DataTextField="RoleDesc";
ddl.DataValueField="RoleValue";
ddl.DataBind();
ddl.SelectedValue=Convert.ToString(DataBinder.Eval(e.Item.DataItem,"RoleValue"));
//ddl.Items.FindByValue(Convert.ToString(DataBinder.Eval(e.Item.DataItem,"RoleValue"))).Selected=true;//选择数据库内的作为默认
}
}
这是我用过的例子
对外做一个属性就是你要查询的条件字段,DataGrid绑定时绑定WebUserControl的这个属性,
这样就可以在WebUserControl中给DropDownList付值。
WebUserControl中的这个属性字段需要放在ViewStart中保存。
给dataGrid添加ItemDataBound事件
private void dataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
{
System.Web.UI.WebControls.DropDownList drop = (System.Web.UI.WebControls.DropDownList)e.Item.FindControl("dropDown");
drop.DataSource = GetData();drop.DataTextField = "Name";
drop.DataValueField = "ID";drop.DataBind();
}
GetData表示取出所要绑定的数据,DataTextField表示要显示在Dropdown的字段,DataValueField表示DropDown的实际字段.
{
DataRow row = (DataRow)e.Item.DataItem;
}
<asp:DropDownList id="DropDownList1" runat="server"></asp:DropDownList>
</EditItemTemplate>
cs:
为DataGrid添加ItemDataBound事件
private void DataGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType==ListItemType.EditItem)
{
DataSet myDs=SqlHelper.ExecuteDataset(MyGet.GetConnString(),CommandType.Text,"select * from TB_Role");
DropDownList ddl=(DropDownList)e.Item.FindControl("DropDownList1");
ddl.DataSource=myDs.Tables[0];
ddl.DataTextField="RoleDesc";
ddl.DataValueField="RoleValue";
ddl.DataBind();
ddl.SelectedValue=Convert.ToString(DataBinder.Eval(e.Item.DataItem,"RoleValue"));
//ddl.Items.FindByValue(Convert.ToString(DataBinder.Eval(e.Item.DataItem,"RoleValue"))).Selected=true;//选择数据库内的作为默认
}
}
这是我用过的例子
dd.DataSource = GetData();dd.DataTextField = "Name";
dd.DataValueField = "ID";dd.DataBind();