asp.net中的Datagrid如何实现动态下拉框的功能?

2024-12-20 01:15:50
推荐回答(1个)
回答1:

可以!把打算下拉的那列变成模板列(TemplateField),在模板列中拖入下拉框,这个最好用IDE完成,完成之后看前台源码如下:(这是我的程序片段)
 在后台要做两件事,1是把数据库中的数据绑定到下拉框,2是当下拉框被选择时程序要做出的反应:
1.把数据库中的数据绑定到下拉框
protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)//该事件是自动生成{if (e.Row.RowType == DataControlRowType.DataRow)//如果此行是DataGrid控件数据行{string topicID = GridView.DataKeys[e.Row.RowIndex].Value.ToString();//获取本行关键字的值
//***************下面是三级模板列的绑定**********************
if (((DropDownList)e.Row.FindControl(DDLContent)) != null)//我的下拉框叫DDLContent{DataSet ds = cd.getContentModel(topicID);//从数据库中取得要放入下拉框的数据
DropDownList DDLContent = (DropDownList)e.Row.FindControl(DDLContent);
DDLContent.Items.Clear();
DDLContent.DataSource = cd.listModel();
DDLContent.DataBind();//绑定
if (ds.Tables[0].Rows.Count 0)//{DDLContent.SelectedValue = ds.Tables[0].Rows[0][模板编号].ToString();}else{DDLContent.Items.Insert(0, 请选择...);//用户没进行选择时显示这行}}//*****************三级模板列绑定结束************************}}
2.如果被绑定的下拉框被用户选择,那么。。。
protected void DDLContent_SelectedIndexChanged(object sender, EventArgs e){//下面都是我的具体业务逻辑,你把它们换成你自己的
GridViewRow GVR = (GridViewRow)((Control)sender).Parent.Parent;
DropDownList DDLC = (DropDownList)(GVR.FindControl(DDLContent));