datalist模版列中的dropdownlist如何处罚他的change事件 来改变模版列中的另一个dropdownlist

解决方案 »

  1.   

    把这个dropdownlist的AutoPostBack设置为true;
    在Grid绑定的时候,给它注册事件
      

  2.   

    private void yourGridItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
                             DropDownList ddl = (DropDownList )e.Item.FindControl("yourDropDownList");
       ddl.SelectedIndexChanged += new EventHandler(ddl_SelectedIndexChanged);
    }
    private void ddl_SelectedIndexChanged(object sender, System.EventArgs e)
    {

    }
    }
      

  3.   

    private void dlgOperation_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
    {



    if(e.Item.ItemType==ListItemType.EditItem)
    {   
    //邦定服务商
    SqlConnection conn = new SqlConnection(ConfigManager.CurrentDBContext.ConnectionString);
    string sql1="select Serv_Supper_ID,Serv_Supper_Name from Comm_Serv_Supper group by Serv_Supper_ID,Serv_Supper_Name";
    System.Data.SqlClient.SqlDataAdapter mycomm1=new SqlDataAdapter(sql1,conn);
    DataSet myds1=new DataSet(); 
    mycomm1.Fill(myds1,"Comm_Serv_Supper");
    DropDownList mydrop1=new DropDownList();
    mydrop1=(DropDownList)e.Item.FindControl("drServ_Sup");
    mydrop1.DataSource=myds1;
    mydrop1.DataValueField="Serv_Supper_ID";
    mydrop1.DataTextField="Serv_Supper_Name";
    mydrop1.DataBind();
    mydrop1.Items.Insert( 0,new ListItem("所有服务商","0") ); mydrop1.Items.FindByValue(Serv_Supper_ID).Selected=true;
                    this.dlitemindex=e.Item.ItemIndex;                 //邦定业务名称
    string sql="";
    if( mydrop1.SelectedValue != "0" )
    sql= "SELECT Serv_ID,Serv_Name FROM Comm_Serv WHERE Serv_Supper_ID = "+Serv_Supper_ID;
    else
    sql = "SELECT Serv_ID,Serv_Name FROM Comm_Serv";
    System.Data.SqlClient.SqlDataAdapter mycomm=new SqlDataAdapter(sql,conn);
    DataSet myds=new DataSet(); 
    mycomm.Fill(myds,"Comm_Serv");
    DropDownList mydrop=new DropDownList();
    mydrop=(DropDownList)e.Item.FindControl("drServ_Name");
    mydrop.DataSource=myds;
    mydrop.DataValueField="Serv_ID";
    mydrop.DataTextField="Serv_Name";
    mydrop.DataBind();
    mydrop.Items.Insert( 0,new ListItem("所有业务","0") );

    mydrop.Items.FindByValue(Serv_ID).Selected=true;  mydrop1.SelectedIndexChanged+=new EventHandler(mydrop1_SelectedIndexChanged); }


     
    }
      

  4.   

    变通的方法是额外的放一个Button来激活......
      

  5.   

    DropDownList myDDL = (DropDownList)sender
    加上试验一下
      

  6.   

    Grid的ItemCommand事件,为甚捕捉不到ddl的触发事件?
      

  7.   

    private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if(e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item) 
    {  
    DropDownList myDDL=(DropDownList)e.Item.FindControl("DropDownList1");
    myDDL.SelectedIndexChanged+=new EventHandler(this.DropDownList1_SelectedIndexChanged);
    }
    }private void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e)
    {
    Response.Write("aa");

    }
      

  8.   

    好像datalist就不支持这样的操作;我想把两个droplist放在一个用户控件了封装起来也许可以.但是我现在没时间进行测试了
      

  9.   

    我觉得关键在于,引起页面POSTBACK的对象是GRID而不是dropdownlist
    然后grid发现,ItemCommand里面,没有什么CommandName之类的咚咚
    说白了
    dropdownlist根本没有触发 Grid的ItemCommand事件
    跟封装成一个用户控件大概没有密切的关系
      

  10.   

    private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if(e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item) 
    {  
    DropDownList myDDL=(DropDownList)e.Item.FindControl("DropDownList1");
    if(myDDL!=null){
    myDDL.SelectedIndexChanged+=new EventHandler(this.DropDownList1_SelectedIndexChanged);}
    }
    }
    private void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e)
    {
    Response.Write("aa");

    }
    像这样是可以触发的,前提是:DropDownList1.AutoPostBack=true;
      

  11.   

    AutoPostBack属性设置一下就可以了,默认不回发,你令他回发应该就没问题了
      

  12.   

    <asp DropDownList id=drServ_Sup runat="server" AutoPostBack="True" EnableViewState="False" OnSelectedIndexChanged="ChangeDropList"></asp DropDownList></TD></TR>
    应该是没有问题的了。
      

  13.   

    ChangeDropList事件 必须是protected
      

  14.   

    谢谢楼上的启发 解决了 源码在我的blog上
    http://www.cnblogs.com/whxleem/archive/2004/09/18/44443.aspx
      

  15.   

    简直搞笑
    OnSelectedIndexChanged="ChangeDropList"
    如果按楼主说的不能触发,怎么可能执行这个事件?