1

複数の列を持つグリッドビューがありますが、動的に変更する必要がある列は 1 つだけです。各行には、更新するデータベース呼び出しが必要な「ステータス」値があります。その呼び出しを行う関数を作成しましたが、それを更新するために作成した現在のアプローチでは、ページ全体が更新されます。更新すると状態 (ページの他の領域で選択された値、スクロールされた場所など) が削除されるため、これは目障りです。

これを設定するために私が書いたコードは次のとおりです。

<div class = "my_gridview">
    <asp:Timer ID = "timer_1" OnTick = "timer_1Tick" runat = "server" Interval = "25" />
        <asp:UpdatePanel ID = "update_panel" UpdateMode = "Conditional" runat = "server">
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID = "timer_1" EventName = "Tick" />
        </Triggers>
        <ContentTemplate>
            <asp:GridView ID="my_gridview" runat="server" AutoGenerateColumns = "False" 
                GridLines="None" Width="100%" AllowSorting="True" 
                CssClass="table table-bordered x-condensed cameraDetails" OnRowDataBound = "my_list_RowDataBound"
                EmptyDataText = "There are no generated heatmaps">
                <Columns>
                    <asp:TemplateField meta:resourceKey = "StringSourceID">
                    <HeaderTemplate>
                        <asp:Label ID = "srcTitleLbl" runat="server" Text = "Source" />
                    </HeaderTemplate>
                        <ItemTemplate>
                            <asp:Label ID = "srcLbl" runat="server" CssClass="LinkBtn_Type" meta:resourceKey="srcLblResource" />
                        </ItemTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField meta:resourceKey = "StringStatus">
                    <HeaderTemplate>
                        <asp:Label ID = "statusTitleLbl" runat="server" Text = "Status" />
                    </HeaderTemplate>
                        <ItemTemplate>
                            <asp:Label ID = "statusLbl" runat="server" CssClass="LinkBtn_Type" meta:resourceKey="statusLblResource" />
                        </ItemTemplate>
                    </asp:TemplateField>

                </Columns>
            </asp:GridView>
            </ContentTemplate>
        </asp:UpdatePanel>
    </div>

ページ全体が更新されない場合、これをどのように行うことができますか?

4

1 に答える 1

2

UpdatePanels は部分的なポストバックを行いますが、それでもページのライフサイクルを通過するため、状態が削除されます。アイテムの選択 (チェックボックス、行など) などの永続的なものを調査することはできますが、これを作成して維持するには多くの時間を費やす可能性が高く、悪夢になるでしょう。

ページのライフサイクルを完全に回避し、説明しているユーザー エクスペリエンスを実現するには、プレーンな JavaScript、KnockoutJS、Backbone、AngularJS などのクライアント側のソリューションを使用します。これらのアプローチでは、データをサーバーに送信/取得している間、ページの状態をそのままにしておき、ページの一部を更新する可能性があります。

于 2013-06-22T18:19:14.490 に答える