简体   繁体   中英

SelectedIndexChanged event of dropDownList not firing in Update Panel

SelectedIndexChanged event of dropDownList not firing in Update Panel and also set AutoPostBack="true".

Below is my Design Code:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
 <ContentTemplate>
<asp:DropDownList ID="ddl_TypeofCampaign" runat="server"  CssClass="form-control" AutoPostBack="true" OnSelectedIndexChanged="ddl_TypeofCampaign_SelectedIndexChanged" AppendDataBoundItems="true" ViewStateMode="Enabled" EnableViewState="true" >
<asp:ListItem Text="Select" Value="0"></asp:ListItem>
<asp:ListItem Text="Email" Value="Email"></asp:ListItem>
<asp:ListItem Text="SMS" Value="SMS"></asp:ListItem>
<asp:ListItem Text="Voice SMS" Value="Voice SMS"></asp:ListItem>
</asp:DropDownList>

<asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1"
DisplayAfter="1">
<ProgressTemplate>
<div id="IMGDIV" runat="server" align="center" style="visibility: visible; vertical-align: middle; position: absolute; background-color: #fafbf6"
valign="middle">
 <asp:Image ID="Image001" runat="server" ImageUrl="~/assets/img/ajax-loader.gif" />
 </div>
 </ProgressTemplate>
 </asp:UpdateProgress>

   </ContentTemplate>
</asp:UpdatePanel>

Code behind:

protected void ddl_TypeofCampaign_SelectedIndexChanged(object sender, EventArgs e)
{
    Thread.Sleep(2000);
    FillTemplates();
    btn_Preview.Visible = false;

}

My page Load code.

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        FillGrid();
        FillTypeofSourcing();
        FillCampaignNames();
        FillTemplates();

    }
}

Fill Template method where I am getting templates name base on selection.

 protected void FillTemplates()
{
    if (ddl_TypeofCampaign.SelectedItem.ToString() != "Select")
    {
        bo.Para1 = ddl_TypeofCampaign.SelectedItem.ToString();
        bo.Para2 = "Stage1";//StageValue in TemplateMasterInfo Table
        DataTable dt = bl.Get_Templates(bo);
        ddl_TypeofTemplateName.DataSource = dt;
        ddl_TypeofTemplateName.DataTextField = "TemplateName";
        ddl_TypeofTemplateName.DataValueField = "TemplateId";
        ddl_TypeofTemplateName.Items.Clear();
        ddl_TypeofTemplateName.Items.Add(new ListItem("Select", "0"));
        ddl_TypeofTemplateName.DataBind();
    }
    else
    {
        ddl_TypeofTemplateName.Items.Clear();
        ddl_TypeofTemplateName.Items.Add(new ListItem("Select", "0"));
        ddl_TypeofTemplateName.DataBind();
    }
}

Try to add Trigger to your Update Panel like shown as below

   <Triggers>
     <asp:AsyncPostBackTrigger ControlID="ddl_TypeofCampaign" 
EventName="SelectedIndexChanged" />    
    </Triggers>

UPDATE

       <asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <Triggers> //this is missing in your code posted
     <asp:AsyncPostBackTrigger ControlID="ddl_TypeofCampaign" EventName="SelectedIndexChanged" /> 
   </Triggers> 
     <ContentTemplate>mydropcode </ContentTemplate> </asp:UpdatePanel>

在页面标记中,我提到了viewStateEncryptionMode =“ Never”,并且我正在使用Visual Studio2013。以下是我的页面标记详细信息。

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="ViewCandidate.aspx.cs" Inherits="ViewCandidate" validateRequest="false" enableEventValidation="false" viewStateEncryptionMode="Never" %>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM