我有一个里面有两个ListBoxes的UpdatePanel。我想要发生的是,当页面加载时,第一个ListBox会填充一些数据。当用户选择and项时,第二个ListBox应该填充相关数据。
下面是发生了什么,第一个ListBox填充了数据,用户选择了一个项目并触发了SelectedIndexChanged事件,但在方法可以看到选择了哪个项目之前,选择就被清除了?
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<table class="listBoxTable">
<thead>
<tr>
<th>
Please select a magazine to add articles to.</th>
</tr>
</thead>
<tr>
<td>
<asp:ListBox ID="lbMagazines" runat="server" Height="300px" Width="250px"
onselectedindexchanged="lbMagazines_SelectedIndexChanged" DataTextField="Title"
DataValueField="Id" AutoPostBack="True">
</asp:ListBox>
</td>
<td>
<asp:ListBox ID="lbIssues" runat="server" Height="300px" Width="250px"
Enabled="False" DataTextField="Title" DataValueField="Id">
</asp:ListBox>
</td>
</tr>
</table>
</ContentTemplate>
</asp:UpdatePanel>发布于 2009-02-17 20:43:16
根据所提供的信息,我最初的想法是在页面加载时重新填充lbMagazines,这样当它到达事件时,选定的项/索引就会被清除。
发布于 2009-02-17 20:44:18
如果只需要更改第二个列表框的内容,那么将第一个列表框放在UpdatePanel之外并使用triggers属性会更合适:
<Triggers>
<asp:AsyncPostBackTrigger ControlID="lbMagazines" EventName="OnSelectedIndexChanged" />
</Triggers>这样,当您执行AJAX回发时,只会更新第二个列表框。
发布于 2009-02-17 20:47:20
听起来您最初的列表绑定代码并没有包装在Page.IsPostBack中。
If (!Page.IsPostBack)
{
//List bind code
}在这种情况下,原始列表将继续重新绑定,就像您看到的那样。
https://stackoverflow.com/questions/558592
复制相似问题