在计时器上刷新Gridview但保持扩展div的状态

时间:2014-07-23 15:09:23

标签: c# javascript jquery asp.net gridview

我在更新面板和计时器中运行了Gridview。它只显示主标题和其他主要部分,然后在其下方是剩余的细节。用户可以单击标题div,它会扩展/隐藏其下面的内容,每行使用以下Javascript

<script type="text/javascript">
    $(function () {
        $('.requestDetails').css('display', 'none');
        $('.expandResults').click(function () {
            $(this).parent().children(".requestDetails").slideToggle(500);
            $(this).toggleClass('slideSign');
            return false;
        });
    });

HTML看起来像这样

<asp:Timer runat="server" ID="ctlTimer" Enabled="false" Interval="5000" OnTick="OnTimerIntervalElapse"/>
                <asp:UpdateProgress ID="UpdateProgress1" runat="server" 
    AssociatedUpdatePanelID="UpdatePanel1">
            <ProgressTemplate>
            </ProgressTemplate>
        </asp:UpdateProgress>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" ViewStateMode="Enabled">
<Triggers>
                <asp:AsyncPostBackTrigger ControlID="ctlTimer" EventName="Tick" />
            </Triggers>
    <ContentTemplate><asp:GridView ID="gvTasks" runat="server" AutoGenerateColumns="False" OnRowDataBound="gvTasks_RowDataBound"
            OnRowCommand="gvTasks_RowCommand" 
            OnRowCreated="gvTasks_RowCreated" CssClass="gvGridTasksActive">
            <Columns><asp:TemplateField HeaderText="Task" SortExpression="RequestSent">
                    <ItemTemplate>
                        <div class="expandResults" id="expandResults">
                            <div class="title">Title stuff..
                            </div>
                            <div class="timeStamp">Timestamp stuff..
                            </div>
                            </div>

                        <br class="clearfloat" />
                        <div class="requestDetails" id="requestDetails">
                        <br /><hr />
                            Request details stuff....</div></ItemTemplate>
                    <EditItemTemplate>

                    </EditItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

    

我遇到的问题是当页面刷新时,它会扩展div的所有行。有没有办法让我可以让页面进行自动刷新,这样我的c#可以重新绑定网格,如果添加了新的记录,但它会记住当前扩展的内容是什么?

1 个答案:

答案 0 :(得分:0)

建议是使用带有适当参数的iCallBack并异步获取修改后的数据,并在JavaScript的帮助下,在网格中追加/删除/修改数据。

您可以异步获取数据并检查每行的更改并相应地绑定新的HTML。

发布代码很困难