http://community.csdn.net/Expert/topic/4232/4232931.xml?temp=.7299005
问题还没有真正解决。
我在DataGrid中添加了Item模板列,放置了两个DropDownList控件:ddlDept,ddlEmpl,分别用来绑定部门和员工,ddlDept的AutoPostBack设为true,根据网友的建议需要给ddlDept添加一个事件委托,才能触发SelectedIndexChanged事件。但具体怎么实现还是摸不着头脑,请帮忙

解决方案 »

  1.   

    不知道这个办法行不行绑定的时候ddlDept的每一项设成这样"ItemIndex,DeptID";electedIndexChanged事件就处理ddlDept.SelectedValue,这样可以得到ItemIndex,通过这个ItemIndex就不难找到ddlEmpl了
      

  2.   

    增加事件委托?你在编辑处选中ddlEmpl,在属性的事件选项中双击SelectedIndexChanged不就增加了事件委托了吗?
    系统会自动加入如下事件的
    this.ddlEmpl.SelectedIndexChanged += new System.EventHandler(this.ddlEmpl_SelectedIndexChanged);
      

  3.   

    找到方法了:
    http://www.cnblogs.com/lovecherry/archive/2005/04/04/131787.html
    但还有个问题:
    protected void ddlDept_SelectedIndexChanged(object sender, System.EventArgs e)
    {
      foreach(DataGridItem dgi in DataGrid1.Items)
    {
    DropDownList ddl = new DropDownList();
    ddl = (DropDownList)dgi.FindControl("ddlDept");
    string deptno = ddl.SelectedValue;
    ddl = (DropDownList)dgi.FindControl("ddlEmpl");
    BindEmp(deptno,ddl);
    }
    }
    当触发时我只会遍历所有行并重新绑定员工,不知用什么方法只重新绑定部门改变的那一行?
      

  4.   

    搞定,原来绑定部门员工不能在DataItemBinded中进行,不然每次postback都会重新绑定。
    另:我用xmlHttp方式实现的有点问题:部门和员工联动正常,只是在提交时我要遍历DataGrid的每一行,取员工共编号,但是能取到的只能是第一次绑定的部门中的员工,也就是说客户端所做的改动服务器无法获取,不知该怎么解决。想用这种方式,毕竟页面不用太闪
      

  5.   

    放个hidden控件获得dropdownlist的值,然后获得这个值不就可以了
      

  6.   

    想用这种方式,毕竟页面不用太闪
    --------------------------------
    自从有了asp.net正式版,就有了简单设置一下 smartNavigation=true 这种页面属性的做法。你认为你的写法比asp.net现成的方法要方便么?
      

  7.   

    hackate(兰花开香入梦境,独思佳人亦飘然!!) --
    放个hidden控件获得dropdownlist的值,然后获得这个值不就可以了
    ---------------------------
    这个hidden控件放在哪儿呢?具体该怎么操作?我要获取的是若干行中的值
      

  8.   

    看起来有点晕,不知道你实际上要做什么样的功能呢?
    你不是要用这个hidden获得每一行的dropdownlist的值吗?
    那每一行都放一个不可以吗?能把需求说清楚一些?