我有以下 gridview 和“loadingbar” div:
<asp:GridView ID="importLogGV"
AutoGenerateColumns="false"
DataKeyNames="id"
OnRowDeleting="DeleteStuff"
runat="server"
CssClass="searchListGridView">
<Columns>
<asp:BoundField HeaderText="ID" DataField="id">
[...]
<asp:TemplateField ItemStyle-Width="120">
<ItemTemplate>
<asp:LinkButton ID="lnkDel" CommandName="Delete" Text='Delete' runat="server"
OnClientClick="return confirm('Really delete?');" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<div id="deleting" style="text-align: center" Visible="False" runat="server"
ClientIDMode="Static">Delete in progress...<br />
<asp:Image runat="server" ID="Image1" ImageUrl="~/Images/ajax-loadingbar.gif"/>
</div>
虽然事件处理程序“DeleteStuff”在后面的代码中运行(它执行大量数据库操作,最多可能需要 10 秒),但我需要显示“删除”div,当事件处理程序完成时,它需要再次隐藏 div。
这是我在代码隐藏中删除的事件处理程序:
protected void DeleteStuff(object sender, GridViewDeleteEventArgs e)
{
deleting.Visible = true;
System.Threading.Thread.Sleep(5000);
deleting.Visible = false;
}
我尝试使用 style:display 代替 visible 属性,我尝试使用 asp:panel 代替 div,但无论我做什么,事件处理程序都会运行,但 div 在运行时从未显示。
当用户单击删除按钮时,我想用 javascript 显示 div,但是在 DeleteStuff 过程完成后,我怎么能再次隐藏它呢?