DropDownList SelectedIndexChanged未触发(AutoPostBack =" true")

时间:2015-05-27 05:30:47

标签: c# asp.net

我在更新面板内的网页上有一个dropdownList。当我从下拉列表中选择一个不同的值时,没有任何反应意味着" SelectedIndexChanged"事件没有解雇。

ASPX代码:

<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
    <ContentTemplate>
     <table class="table table-mv-vouchers" style="margin:0px;" cellspacing="0" cellpadding="0">
                        <caption class="mv-clearfix">                            
                         <asp:DropDownList ID="ddlShort" Width="150"  runat="server" AutoPostBack="True" ViewStateMode="Enabled"  EnableViewState="true"  OnSelectedIndexChanged="ddlShort_SelectedIndexChanged">
                            <asp:ListItem Text="By Estimate" Value="EstimateValue"></asp:ListItem>
                            <asp:ListItem Text="By Merchant" Value="MerchantName" Selected="True"></asp:ListItem>
                            <asp:ListItem Text="By Type" Value="MerchantCategory"></asp:ListItem>
                            <asp:ListItem Text="By Validity" Value="Validity"></asp:ListItem>                        
                        </asp:DropDownList>                                                          
                        </caption>
                        </table>
</ContentTemplate></asp:UpdatePanel>

服务器端代码:

protected void ddlShort_SelectedIndexChanged(object sender, EventArgs e)
{
    string ByShort = ddlShort.SelectedValue;
    if (ByShort != null)
    {
        DataSet dsAllMerchant = Main.Instance.serClient.GetMerchantList(null,true, ByShort, null,currentBaID,true);
        DataTable newdata = this.GenerateData(dsAllMerchant.Tables[0]);
        lvGiftVoucher.DataSource = newdata;
        lvGiftVoucher.DataBind();
    }
}

8 个答案:

答案 0 :(得分:1)

我的问题是<caption class="mv-clearfix"> </caption>标记,我认为此标记无法识别。删除此标记后,下拉列表即会触发。谢谢大家的回答。

答案 1 :(得分:0)

我认为你应该为你的UpdatePanel添加一个触发器,如:

<asp:updatepanel ...>
   <triggers>
       <asp:asyncpostbacktrigger controlid="DrpEmployeeType" eventname="SelectedIndexChanged" />
   </triggers>
</asp:updatepanel>

答案 2 :(得分:0)

将UpdatePanel更新模式更改为始终

UpdateMode="Always"

答案 3 :(得分:0)

确保您拥有:

  • 页面上的ScriptManager
  • 包装UpdatePanel标记
  • lvGiftVoucher
  • 为您提供了一个唯一的ID更新面板
  • AsyncPostbackTrigger用于下拉SelectedIndexChanged活动
  • UpdateMode设为Conditional
  • AutoPostback = "True"为dropdwonlist(你已经做过)

下拉标记(按原样,只删除updatepanel包装)

<table class="table table-mv-vouchers" style="margin:0px;" cellspacing="0" cellpadding="0">
<caption class="mv-clearfix">                            
 <asp:DropDownList ID="ddlShort" Width="150"  runat="server" AutoPostBack="True" ViewStateMode="Enabled"  EnableViewState="true"  OnSelectedIndexChanged="ddlShort_SelectedIndexChanged">
    <asp:ListItem Text="By Estimate" Value="EstimateValue"></asp:ListItem>
    <asp:ListItem Text="By Merchant" Value="MerchantName" Selected="True"></asp:ListItem>
    <asp:ListItem Text="By Type" Value="MerchantCategory"></asp:ListItem>
    <asp:ListItem Text="By Validity" Value="Validity"></asp:ListItem>                        
</asp:DropDownList>                                                          
</caption>
</table>

UpdatePanel加价

<asp:UpdatePanel runat="server" id="up1" UpdateMode="Conditional" ChildrenAsTrigger="False">
    <Triggers>
        <asp:AsyncPostbackTrigger ControlId="ddlShort" EventName="SelectedIndexChanged" />
    </Triggers>
    <ContentTemplate>
        <!-- lvGiftVoucher markup here -->
    </ContentTemplate>
</asp:UpdatePanel>

答案 4 :(得分:0)

我同意Sachu .....服务器端编码,关于“PageLoad事件”....(!IsPostback)事件应该发生在&amp;调用“Drop downList”

答案 5 :(得分:0)

是使用母版页创建的网页吗?如果是,请检查您的表单标签是在哪个页面母版页/网页中。如果它在母版页中,那么简单地发出那个并在网页中使用表单标记。

答案 6 :(得分:0)

在我的电脑中,相同的代码正常工作 ....

编辑

试试这个

在“更新”面板中添加以下代码

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

希望这项工作......

答案 7 :(得分:0)

尝试以下方法:
1.添加try-catch块,看看是否有任何例外 2.如果您的更新面板UpdateModeconditional,则必须手动调用Update()方法,否则面板将不会更新。