2016-09-22 132 views
0

dropDownList的SelectedIndexChanged事件在更新面板中未触发并且还设置AutoPostBack =“true”。dropDownList的SelectedIndexChanged事件在更新面板中未触发

下面是我的设计规范:

<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> 

后面的代码:

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

} 

网页的加载代码。

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

    } 
} 

填充模板方法,我得到的模板名称基于选择。

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(); 
    } 
} 
+0

显示你的'page_load'代码 – Webruster

+0

我已经更新了我的问题,还提到页面加载代码。 @Webruster – zahed

+0

你在哪里加载这个下拉菜单? – Webruster

回答

0

在网页代码我提viewStateEncryptionMode = “从不”,我使用Visual Studio 2013.以下是我的页面标签的详细信息。

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

尝试添加Trigger您更新面板类似如下图所示

<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> 
+0

我已经将代码添加到更新面板ContentTemplate中,但发生错误:元素'AsyncPostBackTrigger不是一个知道元素。如果网站中存在编译错误或缺少web.config文件,则会发生这种情况。 @Webruster – zahed

+0

@zahed请告诉ü如何加入这个在你的代码 – Webruster

+0

内容模板> 。 @Webruster – zahed

相关问题