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;
    }
}

知道为什么这不起作用吗?谢谢。

UpdatePanel中的ListView' SelectedIndexChanging事件导致整个页面重新加载

在新版本的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>