问题描述
GridView1绑定表“单位”,DropDownList1绑定表“人员”,两表的公共字段是“单位编码”,我在GridView1的编辑模板中,拖进了一个DropDownList1,然后我想实现GridView1中的每行的DropDownList1显示当前行的“单位”对应的“人员”(根据“单位编码”查询),请问我该在DropDownList1的什么事件中如何实现,我发现在摸钣中拖进的控件取不到他的ID值,就是控件名,本来我是想在DropDownList1的绑定数据库事件中的查询语句,取到GridView1当前行的索引值,也就是“单位编码”,根据其查询出来的“人员”结果绑定DropDownList1,结果不但DropDownList1的控件名取不到,连GridView1的索引也取不到,索引我想这样取的,GridView1.Rows[e.RowIndex].Cell[0].Text,e的RowIndex属性取不到,以前也是有时候取到有时候就没有,这个属性还需要满足一定条件才能取到么?所以在此请教各位高手大侠几个问题:1,为何我在编辑模板中拖进的控件取到不其ID名2,取e.RowIndex属性需要满足某种条件么?需要的话是啥条件啊?3,以上两个都是小问题,关键是如何实现我的DropDownList1的绑定啊!实现这个根据每行“单位”显示“人员”的功能!
解决方案
解决方案二:
不明白你什么意思,如果只是要显示,没必要用DropDownList控件。直接将要显示的人员名字在取数据库的时候就读出来!如果还想在Grid里编辑的话,就只能在编辑模板列里加DropDownList,然后遍历绑定DropDownList,取数据库的值就自己想想怎么样最省性能吧。
解决方案三:
三个问题其实是一个问题1.下拉框必须指定ID,便于用FindControl来查找2.定义表格的编辑事件RowEditing,事件里的参数E包含一个当前行的索引.3.利用1和2获取下拉框和单位编码,去执行一下查询,把当前单位下的人员查询绑定到下拉框中即可.
解决方案四:
不用GV..我一般用DataList自定义下拉.或者用Repeator自定义下拉.
解决方案五:
1.要获得GRIDVIEW中嵌套的控件,应该使用GRIDVIEW1.FINDCONTROL("ID");方法2.同意楼上说的3.可以在事件RowDataBound中写代码,该事件是GRIDVIEW控件每一行绑定数据时触发的
解决方案六:
在GridView1_RowDataBound事件里:protectedvoidGridView1_RowDataBound(objectsender,GridViewRowEventArgse){if(e.Row.RowType==DataControlRowType.DataRow){//找到DropDownList1DropDownListddl=(DropDownList)e.Row.FindControl("DropDownList1");//ddl.SelectedValue="01";e.Cell[0].Text;//得到当前行的索引BindDDL("得到的单位编号")//将查询出的人员绑定到DropDownList}}