Asp.net C # prevents the selected event from triggering an index change when the index changes from server code

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>

The C # code for OnSelectedIndexChanged of both is given 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();
}

both are populated with database entry elements using some server-side code. Now, the OnSelectedIndexChanged event from "ddlM", I want to make the first index "ddlC", but WITHOUT triggering the ddlC_SelectedIndexChanged event. And the same for "ddlC" as the OnSelectedIndexChanged event from "ddlC". I want to make the first index "ddlM", but WITHOUT triggering the ddlM_SelectedIndexChanged event. That's right, this is not an event. How can I prevent this?

thank

+3
source share
2

SelectedIndexChanged

 ddlM.SelectedIndexChanged -= ddlM_SelectedIndexChanged;

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

 ddlM.SelectedIndexChanged += ddlM_SelectedIndexChanged;

+4

bool true SelectedIndexChanged. Control SelectedIndexChanged , . true, . , . false , .

boool flag = false;

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

protected void ddlM_SelectedIndexChanged(object sender, EventArgs e)
{
   if(flag)
       return;

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

,

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

All Articles