【问题标题】:Listbox OnSelectedIndexChanged doesn't work列表框 OnSelectedIndexChanged 不起作用
【发布时间】:2015-08-19 14:21:29
【问题描述】:

我的 jquery 对话框中有一个列表框,

<div id="dialog">
<asp:UpdatePanel ID="updatePanel1" runat="server">
<ContentTemplate>
<asp:ListBox ID="lbxTitle" runat="server" style="width:400px;height:100px;" OnSelectedIndexChanged="lbxTitle_SelectedIndexChanged">
    <asp:ListItem value="2" Text="abc" />
    <asp:ListItem value="3" Text="def" />
</asp:ListBox>
<br />
<fieldset>
    <asp:Label ID="lblContent" runat="server" style="height:200px;" />
</fieldset>
</ContentTemplate>
</asp:UpdatePanel>
</div>

在后面的代码中,我有这个功能

protected void lbxTitle_SelectedIndexChanged(object sender, EventArgs e)
{
   lblContent.Text = "test";
}

我没有放 autopostback="true" 因为它会刷新整个页面,并关闭我的对话框。

如何使当用户单击列表框上的项目时,它会在对话框内的标签上显示“测试”。

现在,如果我更改所选项目,它不会做任何事情。

【问题讨论】:

  • 它不会刷新整个页面,而只会刷新UpdatePanel的内容。异步回发始终是完整回发。
  • 看看我的回答是否为你解决了这个问题。
  • 我尝试输入autopostback,但它确实刷新了整个页面,即使我在updatePanel 中有listbox。 @TimSchmelter
  • @Bee:“刷新整个页面”是什么意思?
  • listbox 位于一个弹出对话框中显示对话框。是否可以不刷新页面而只更改对话框内的值? @TimSchmelter

标签: c# asp.net listbox updatepanel autopostback


【解决方案1】:

你应该把 Autopostback 然后你可以使用 AsyncPostBack 来防止整个页面回发...

按照以下代码

<asp:UpdatePanel ID="updatePanel1" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <asp:ListBox ID="lbxTitle" runat="server" style="width:400px;height:100px;" OnSelectedIndexChanged="lbxTitle_SelectedIndexChanged" AutoPostBack="true">
                <asp:ListItem value="2" Text="abc" />
                <asp:ListItem value="3" Text="def" />
            </asp:ListBox>
            <br />
            <fieldset><asp:Label ID="lblContent" runat="server" style="height:200px;" />
            </fieldset>
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="lbxTitle" />
        </Triggers>
    </asp:UpdatePanel>

【讨论】:

    【解决方案2】:

    添加 AutoPostback 并在创建对话框后将其移回表单:

    $("#dialog").parent().appendTo($("form:first"));
    

    试试这个:

    <script type="text/javascript">
    
        $(function() {
            <% if (Page.IsPostback) { %>
                $('id of your listbox').change();
            <% } %>
        });
    
    </script>
    

    【讨论】:

    • 好的,现在它调用了该函数,但是它仍然刷新了整个页面。页面刷新时对话框关闭。 @thewisegod
    • 查看我修改后的代码,看看它是如何为您工作的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-08
    • 2014-01-13
    相关资源
    最近更新 更多