gpt4 book ai didi

c# - 在代码后面的 gridview 事件处理程序中切换 DIV 可见性不起作用

转载 作者:行者123 更新时间:2023-12-02 18:37:22 24 4
gpt4 key购买 nike

我有以下 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 过程完成后如何再次隐藏它?

最佳答案

每当您单击删除按钮时,都会向服务器发送提交请求,并且您的页面开始刷新。服务器上的方法执行完成后,页面将重新渲染。因此,无论您在方法中做什么,最后的效果都会保留。如果你想在浏览器上显示繁忙的文本,ajax 就是方法;您将必须使用更新面板。试试这个:

JavaScript:

<script type="text/javascript">
function showDeleteConfirm()
{
var isSure = confirm('Really delete?');
if(isSure)
{
document.getElementById("deleting").style['display'] = 'block';
}
}
</script>

aspx 标记:

<asp:UpdatePanel id="up1" runat="server">
<ContentTemplate>
<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 showDeleteConfirm();" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

<div id="deleting" style="text-align: center" style="display:none" runat="server"
ClientIDMode="Static">Delete in progress...<br />
<asp:Image runat="server" ID="Image1" ImageUrl="~/Images/ajax-loadingbar.gif"/>
</div>
</ContentTemplate>
</asp:UpdatePanel>

隐藏代码:

protected void DeleteStuff(object sender, GridViewDeleteEventArgs e)
{
//... Real task here
System.Threading.Thread.Sleep(5000);
deleteing.Style['display'] = 'none';
}

顺便说一句,您需要在页面上添加一个ScriptManager

关于c# - 在代码后面的 gridview 事件处理程序中切换 DIV 可见性不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17187543/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com