日期:2014-05-19  浏览次数:20490 次

GridView模版列有个DropDownList,DropDownList绑定数据,DropDownList触发事件如何取它选取的值
GridView模版列有个DropDownList,这个DropDownList绑定数据,然后触发OnSelectedIndexChanged事件如何取它选取的值

<ItemTemplate>
        <asp:DropDownList   ID= "DropDownList1 "   runat= "server "   AutoPostBack= "True "   DataSourceID= "SqlDataSource2 "   DataTextField= "LinkName "   DataValueField= "LinkUrl "     OnSelectedIndexChanged= "DropDownList1_SelectedIndexChanged ">
        </asp:DropDownList>
        <SelectParameters>
                <asp:ControlParameter   ControlID= "Label1 "   Name= "LinkClassID "   PropertyName= "Text "   Type= "Int32 "   />
        </SelectParameters>
</asp:SqlDataSource>
</ItemTemplate>


在GridView模版列编辑状态时,双击DropDownList1创建事件:
        protected   void   DropDownList1_SelectedIndexChanged(object   sender,   EventArgs   e)
        {
               
                Response.Redirect( "you   select   : ");//输出取到DropDownList1下拉诓的值
             
               
        }

但问题时如何取到这个值呢?

我刚开始用这个,GridView在创建行的时候能取到每行的DropDownList1对象,然后把DropDownList1对象的SelectedIndexChanged事件绑定到相应的处理函数,但是这里的     ddl.SelectedValue如何能传到处理函数呢..   :
  protected   void   GridView1_RowCreated(object   sender,   GridViewRowEventArgs   e)
        {
                DropDownList   ddl   =   (DropDownList)e.Row.FindControl( "DropDownList1 ");
                ddl.SelectedIndexChanged   +=   new   EventHandler(this.DropDownList1_SelectedIndexChanged);

        }


小弟叩首,望各位达人指点...

------解决方案--------------------
如果你在DataGrid的列模板里绑定了DropDownList,实际上是产生了一组DropDownList(有多少行就有多少个),它们的ID是有规律的,可以通过控件ID区分,也可以通过编程方式由你自己去分配ID。两个方法中都可以获得行数(在控件ID尾)。
------解决方案--------------------
DropDownList ddl = (DropDownList)sender;
string test = ddl.SelectedValue;
Response.Redirect(sting.Format( "you select :{0} ",test);//输出取到DropDownList1下拉诓的值