datalist模版列中的dropdownlist如何处罚他的change事件 datalist模版列中的dropdownlist如何处罚他的change事件 来改变模版列中的另一个dropdownlist 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把这个dropdownlist的AutoPostBack设置为true;在Grid绑定的时候,给它注册事件 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) { }} 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); } } 变通的方法是额外的放一个Button来激活...... DropDownList myDDL = (DropDownList)sender加上试验一下 Grid的ItemCommand事件,为甚捕捉不到ddl的触发事件?寒 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"); } 好像datalist就不支持这样的操作;我想把两个droplist放在一个用户控件了封装起来也许可以.但是我现在没时间进行测试了 我觉得关键在于,引起页面POSTBACK的对象是GRID而不是dropdownlist然后grid发现,ItemCommand里面,没有什么CommandName之类的咚咚说白了dropdownlist根本没有触发 Grid的ItemCommand事件跟封装成一个用户控件大概没有密切的关系 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; AutoPostBack属性设置一下就可以了,默认不回发,你令他回发应该就没问题了 <asp DropDownList id=drServ_Sup runat="server" AutoPostBack="True" EnableViewState="False" OnSelectedIndexChanged="ChangeDropList"></asp DropDownList></TD></TR>应该是没有问题的了。 ChangeDropList事件 必须是protected 谢谢楼上的启发 解决了 源码在我的blog上http://www.cnblogs.com/whxleem/archive/2004/09/18/44443.aspx 简直搞笑OnSelectedIndexChanged="ChangeDropList"如果按楼主说的不能触发,怎么可能执行这个事件? codesmith生成实体类模板 关于gridview简单应用 打印时候图片无法显示 有一个网站的中购买功能, 假设现在有很多用户(假设10000人)在抢购一个物品,该物品的库存只有10个,请问怎么设计一个系统支持这样的场景 网站中dll引用的问题 GridView的更新一条记录的命令 模型层,公共层,实体层 帮我修改一下一个简单的正则表达式 请大家帮帮忙!!!!!在线等!!!!! 关于Aspx页面图片显示问题 ,紧急求助 如何取得当前程序所在相对路径? 【分页思维-100分相送】关于分页的思考◆◆◆◆◆◆◆◆◆◆◆◆在线等,马上结帐
在Grid绑定的时候,给它注册事件
{
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)
{
}
}
{
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); }
}
加上试验一下
寒
{
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");
}
然后grid发现,ItemCommand里面,没有什么CommandName之类的咚咚
说白了
dropdownlist根本没有触发 Grid的ItemCommand事件
跟封装成一个用户控件大概没有密切的关系
{
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;
应该是没有问题的了。
http://www.cnblogs.com/whxleem/archive/2004/09/18/44443.aspx
OnSelectedIndexChanged="ChangeDropList"
如果按楼主说的不能触发,怎么可能执行这个事件?