2016-09-22 171 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

相關問題