UpdatePanel中的ListView' SelectedIndexChanging事件导致整个页面重新加载
本文关键字:新加载 加载 ListView 中的 事件 SelectedIndexChanging UpdatePanel | 更新日期: 2023-09-27 18:19:16
我有一个ListView,在一个UpdatePanel, UpdateMode =条件:
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<table>
<tr>
<td>
<asp:ListView ID="SearchListView" runat="server">
<LayoutTemplate>
<div id="scrollDiv" onscroll="SaveScrollPosition();">
<table>
<tr>
...
</tr>
</table>
</div>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td align="right">
<asp:LinkButton ID="lblUnitItem" runat="server" CommandName="Select"></asp:LinkButton>
</td>
</tr>
</ItemTemplate>
<SelectedItemTemplate>
<tr>
<td align="right">
<asp:LinkButton ID="lblUnitItem" runat="server" CommandName="Select"></asp:LinkButton>
</td>
</tr>
</SelectedItemTemplate>
</asp:ListView>
</td>
</tr>
</table>
</ContentTemplate>
</asp:UpdatePanel>
选择列表项会导致整个页面重新加载,而不是部分页面刷新。我在"FillSearchListView"方法中将listview绑定到数据源,并实现了"OnSearchListViewItemCommand"answers"OnSearchListViewSelectedIndexChanging"事件:
protected void OnSearchListViewSelectedIndexChanging(object sender, ListViewSelectEventArgs e)
{
((ListView)sender).SelectedIndex = e.NewSelectedIndex;
FillSearchListView();
}
protected void OnSearchListViewItemCommand(object sender, ListViewCommandEventArgs e)
{
switch (e.CommandName)
{
case "Select":
ListViewDataItem dataItem = (ListViewDataItem)e.Item;
this.CurrentId = decimal.Parse((string)e.CommandArgument);
break;
}
}
知道为什么这不起作用吗?谢谢。
在新版本的ASP。. NET更改容器(如ListView)内控件的ID生成。UpdatePanel上的触发器无法修复此问题。
简单地把ClientIDMode="AutoID"在您的linkbuttons(或其他控件),所以回发将是异步的。
我在更新面板中使用触发
代码
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<table>
<tr>
<td>
<asp:ListView ID="SearchListView" runat="server">
<LayoutTemplate>
</LayoutTemplate>
</asp:ListView>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="SearchListView" EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
添加属性:ChildrenAsTriggers="true"
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true" >
见此处
try this
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<table>
<tr>
<td>
<asp:ListView ID="SearchListView" runat="server">
<LayoutTemplate>
<div id="scrollDiv" onscroll="SaveScrollPosition();">
<table>
<tr>
...
</tr>
</table>
</div>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td align="right">
<asp:LinkButton ID="lblUnitItem" runat="server" CommandName="Select"></asp:LinkButton>
</td>
</tr>
</ItemTemplate>
<SelectedItemTemplate>
<tr>
<td align="right">
<asp:LinkButton ID="lblUnitItem" runat="server" CommandName="Select"></asp:LinkButton>
</td>
</tr>
</SelectedItemTemplate>
</asp:ListView>
</td>
</tr>
</table>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="SearchListView" EventName="SelectedIndexChanging" />
<asp:AsyncPostBackTrigger ControlID="SearchListView" EventName="ItemCommand" />
</Triggers>
</asp:UpdatePanel>