0

UpdatePanel、UpdateMode = Conditional 内にある ListView があります。

<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」メソッドでリストビューをデータソースにバインドし、「OnSearchListViewItemCommand」および「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;
    }
}

これが機能しない理由はありますか?ありがとう。

4

4 に答える 4

2

ASP.NET の新しいバージョンでは、ListView のようなコンテナー内のコントロールの ID 生成が変更されています。これを修正するために、UpdatePanel のトリガーが機能しません。

リンクボタン (または別のコントロール)に ClientIDMode="AutoID" を配置するだけで、ポストバックが非同期になります。

于 2014-06-12T19:19:04.677 に答える
0

属性を追加: ChildrenAsTriggers="true"

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"   ChildrenAsTriggers="true" >

チャイルドレナトリガーはこちら

于 2013-06-20T12:28:45.013 に答える
0

これを試して

<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>
于 2013-06-20T12:37:09.030 に答える