asp.net C#prevent射击SelectedIndexChanged事件,而从服务器端code更改指数 [英] asp.net c# prevent firing selectedindexchanged event while changing index from serverside code

查看:108
本文介绍了asp.net C#prevent射击SelectedIndexChanged事件,而从服务器端code更改指数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有同样的aspx页面上的两个DropDownList控件为

I have two dropdownlist controls on the same aspx page as

<asp:DropDownList ID="ddlM" runat="server" Width="123px" AutoPostBack="True" OnSelectedIndexChanged="ddlM_SelectedIndexChanged">
</asp:DropDownList>

<asp:DropDownList ID="ddlC" runat="server" Width="123px" AutoPostBack="True" OnSelectedIndexChanged="ddlC_SelectedIndexChanged">
</asp:DropDownList>

在C#code为两个OnSelectedIndexChanged情况如下:

the C# code for OnSelectedIndexChanged of both are as below :

protected void ddlC_SelectedIndexChanged(object sender, EventArgs e)
{
   ddlM.SelectedIndex = 0;
   ViewState["ddlC"] = true;
   ViewState["ddlM"] = false;                 
   BindPGrid();            
}

protected void ddlM_SelectedIndexChanged(object sender, EventArgs e)
{
   ddlC.SelectedIndex = 0;                
   ViewState["ddlC"] = false;
   ViewState["ddlM"] = true; 
   BindPGrid();
}

两者都通过使用一些服务器端code数据库记录的项目填充。现在,为了使所选的DDLM我想OnSelectedIndexChanged事件ddlC但没有触发事件ddlC_SelectedIndexChanged的第一个索引。而同为ddlC作为ddlC的OnSelectedIndexChanged事件我想使选定的DDLM但没有触发事件ddlM_SelectedIndexChanged的第一个索引。右不是触发事件。我该怎么办prevent呢?

both are populated by database record items using some server-side code. Now, OnSelectedIndexChanged event of "ddlM" I want to make selected the first index of "ddlC" but WITHOUT firing the event ddlC_SelectedIndexChanged. And same for "ddlC" as OnSelectedIndexChanged event of "ddlC" I want to make selected the first index of "ddlM" but WITHOUT firing the event ddlM_SelectedIndexChanged. Right not it fires the event. How can I do prevent it?

感谢

推荐答案

另外,您可以删除并从控制重新添加SelectedIndexChanged事件处理程序

Alternatively you can remove and re-add the SelectedIndexChanged event handler from the control

 ddlM.SelectedIndexChanged -= ddlM_SelectedIndexChanged;

 ddlM.SelectedIndex = 0;
 ViewState["ddlC"] = false;
 ViewState["ddlM"] = true; 
 BindPGrid();

 ddlM.SelectedIndexChanged += ddlM_SelectedIndexChanged;

然后,你不必与全局标志混乱

Then you don't have to mess with global flags

这篇关于asp.net C#prevent射击SelectedIndexChanged事件,而从服务器端code更改指数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆