列表框OnSelectedIndexChanged不起作用

时间:2015-08-19 14:21:29

标签: c# asp.net listbox updatepanel autopostback

我的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 =&#34; true&#34;因为它会刷新整个页面,并关闭我的对话框。

如何制作它,以便当用户点击列表框中的项目时,它将显示&#34; test&#34;在对话框内的标签上。

现在,如果我更改所选项目,它什么都不做。

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

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

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

试试这个:

<script type="text/javascript">

    $(function() {
        <% if (Page.IsPostback) { %>
            $('id of your listbox').change();
        <% } %>
    });

</script>