我在更新面板和计时器中运行了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#可以重新绑定网格,如果添加了新的记录,但它会记住当前扩展的内容是什么?
答案 0 :(得分:0)
建议是使用带有适当参数的iCallBack并异步获取修改后的数据,并在JavaScript的帮助下,在网格中追加/删除/修改数据。
您可以异步获取数据并检查每行的更改并相应地绑定新的HTML。
发布代码很困难