【问题标题】:SelectedIndexChanged event of dropDownList not firing in Update PaneldropDownList 的 SelectedIndexChanged 事件未在更新面板中触发
【发布时间】:2016-09-22 05:48:27
【问题描述】:

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

以下是我的设计代码:

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

【问题讨论】:

  • 显示您的page_load 代码
  • 我更新了我的问题,还提到了页面加载代码。 @Webruster
  • 你在哪里加载这个下拉菜单?
  • 控制台有错误吗?
  • 我已经删除了所有更新面板和进度条,当我选择下拉列表时出现这样的错误。视图状态 MAC 验证失败。如果此应用程序由 Web Farm 或集群托管,请确保 配置指定相同的验证密钥和验证算法。 AutoGenerate 不能在集群中使用。 @Webruster

标签: c# asp.net updatepanel


【解决方案1】:

在页面标签中,我提到了 viewStateEncryptionMode="Never",我使用的是 Visual Studio 2013。下面是我的页面标签详细信息。

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

【讨论】:

    【解决方案2】:

    尝试将Trigger 添加到您的更新面板,如下所示

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

    更新

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

    【讨论】:

    • 我已将您的代码添加到更新面板 ContentTemplate 中,但出现错误:Element 'AsyncPostBackTrigger is not a known element。如果网站中存在编译错误或缺少 web.config 文件,则可能会发生这种情况。 @Webruster
    • mydropcode 。 @Webruster
    • 现在错误没有出现但仍然没有触发,我在选择索引更改断点后面保留断点代码也不起作用。 @Webruster
    • @zahed 你需要在Triggers 下添加AsyncPostBackTrigger 如下updatepanel --> Triggers --> AsyncPostBackTrigger
    • 我添加了你的更新答案,没有触发任何思考,下拉也没有填充。 @Webruster
    猜你喜欢
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多