如何在没有 Ajax Toolkit 的情况下显示加载图像直到 gridview 完全加载?

2023-12-14

QUESTION

谁能建议如何在 gridview 完全加载之前显示加载图像?

该网格视图将在页面加载时呈现。必须有一个简单的解决方案来检测 gridview 何时加载/加载,以便可以实现加载图像和 gridview 可见性之间的简单切换。

请不要建议使用任何 Ajax 工具包方法除非所需的代码可以被隔离并独立使用。我发现该工具包很容易实现,但性能臃肿且缓慢。我不希望在我的发布包中包含任何不会使用的脚本、文件或代码。

ASP.NET

      <img src="~/Loading.gif"></img>

      <asp:GridView ID="gv" runat="Server" AutoGenerateColumns="False" EnableModelValidation="False">
        'content...
      </asp:GridView>

VB

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    'connection info

    If Not IsPostBack Then
      Me.Bindgv()
    End If
  End Sub


  Private Sub Bindgv()
    'Load gridview
  End Sub

可能性

我愿意接受任何建议,但是我试图使用以下方法来实现解决方案jquery页方法,但需要帮助才能完成。

脚本语言

$(function() {
  $.ajax({
    type: "POST",
    url: "Default.aspx/UpdateGV",
    data: "{}",
    contentType: "application/json",
    dataType: "json",
    success: function() {
      // Run return method.
    }
  });
});

VB.NET

Imports System.Web.Services

Public Partial Class _Default
    Inherits System.Web.UI.Page

    <WebMethod(EnableSession := False)> _
    Public Shared Function UpdateGV() As String
         Return 
         Me.Bindgv()
    End Function
End Class

您可以使用 jquery 来实现这一点,github 上有一个 jquery block UI 项目,您可以只使用该项目来阻止网格视图,而不使用 ajax。

这是执行此操作所需的代码,它经过测试并且工作正常,如下所示:

Step 1在页面头部添加这两行

  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
  <script src="http://malsup.github.io/jquery.blockUI.js"></script>

Step 2上述代码后的扩展 jquery:

<script type="text/javascript">
    $(document).ready(function () {
        $('#Button1').click(function () {
            $('.blockMe').block({
                message: 'Please wait...<br /><img src="Images/loadingBar.gif" />',
                css: { padding: '10px' }
            });
        });
    });
</script>

Step 3就我而言,我使用按钮绑定网格视图,但您也可以随时使用任何其他控件:

<asp:Button ID="Button1" runat="server" Text="Bind Grid View" 
            ClientIDMode="Static" OnClick="Button1_Click" />
    <div class="blockMe">
        <asp:GridView ID="GridView1" runat="server" Width="100%">
        </asp:GridView>
    </div>

Step 4将网格视图绑定到单击的按钮上

    protected void Button1_Click(object sender, EventArgs e)
    {
        DataTable tblCourse = myAccount.GetEnroledCourse("arpl4113");

        //Bind courses
        GridView1.DataSource = tblCourse;
        GridView1.DataBind();
    }

就是这样,没有 AJAX 工具包(仅限 jQuery)所以结果将如下所示:

enter image description here


在页面加载时执行上述解决方案的技巧

首先这是NOTPage_Load 事件上的函数位于服务器端但位于客户端;-)

因此,要实现此目标,您需要有一个隐藏控件来保留页面视图状态上的值,并隐藏相同的按钮以在页面加载时触发它。并对上面的 jQuery 扩展进行了一些更改。完毕!

Step 1.将下面的 css 添加到页面标题中:

 <style> .hidden { display: none; } </style>

Step 2.添加一个隐藏字段并使按钮隐藏,如下所示:

    <asp:HiddenField ID="hidTrigger" runat="server" ClientIDMode="Static" Value="" />
    <asp:Button ID="btnHidden" runat="server" ClientIDMode="Static" 
                OnClick="btnHidden_Click" CssClass="hidden" />
    <div class="blockMe">
        <asp:GridView ID="GridView1" runat="server"></asp:GridView>
    </div>

Step 3.在您的扩展脚本上进行此更改,如下所示:

  <script type="text/javascript">
    $(document).ready(function () {

        //check whether the gridview has loaded
        if ($("#hidTrigger").val() != "fired") {

            //set the hidden field as fired to prevent multiple loading
            $("#hidTrigger").val("fired");

            //block the gridview area
            $('.blockMe').block({
                message: 'Please wait...<br /><img src="Images/loadingBar.gif" />',
                css: { padding: '10px' }
            });

            //fire the hidden button trigger
            $('#btnHidden').click();
        }
    });
</script>

就是这样!并且你的按钮点击后面的代码仍然和以前一样,在这个例子中我只改变了按钮的名称。但没有关于 Page_Load 事件的代码。

    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void btnHidden_Click(object sender, EventArgs e)
    {
        DataTable tblCourse = myAccount.GetEnroledCourse("arpl4113");

        //Bind courses
        GridView1.DataSource = tblCourse;
        GridView1.DataBind();
    }

我希望它对你有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在没有 Ajax Toolkit 的情况下显示加载图像直到 gridview 完全加载? 的相关文章

随机推荐

  • python qt,在另一个小部件(声子)上方显示文本/标签

    我正在使用 PySide 制作一个视频播放器 它是与 Qt 框架的 python 绑定 我正在使用声子 一个模块 来显示视频 我想在视频上方显示文本作为字幕 如何在我的声子小部件上方放置另一个小部件 opengl 是一个选项吗 如果您只是创
  • 如何对 google LatLng 对象进行字符串化?

    我正在使用谷歌地图 API 并尝试对点数组进行字符串化 每个点都有纬度和经度 我想要做的是将数据字符串化并将其存储在数据库中 以便以后检索 问题是 由于谷歌地图存储和使用数据的方式 结果JSON stringify有时是奇怪的随机 例如 有
  • 使用分号和大括号的 C# 命名空间声明有什么区别?

    我注意到 C 中命名空间声明的两种不同方法 namespace FirstProgram and namespace FirstProgram 我正在寻找有关 C 中两种类型的命名空间声明的主要区别和用途的信息 示例 带有分号 namesp
  • Ajax 将文件从浏览器上传到 FTP 服务器

    是否可以使用ajax将文件从浏览器上传到FTP服务器 不可以 浏览器不提供允许从 JavaScript 写入 FTP 的 API 你可以将文件发布到 HTTP 端点然后使用服务器端代码将其推送到您的 FTP 服务器
  • 测量 Angular 中 svg 元素的尺寸

    我正在尝试使用 SVG 在 Angular 中创建一个类似仪表的组件来绘制形状 我想将文本放在矩形内居中 文本将根据仪表的值而变化 因此 我想调整字体大小以使该值适合矩形 或者 我可以调整数字格式 例如 如果字符串太长 则使用科学记数法 使
  • 使用 svndumpfilter 包含多个文件夹

    我在服务器中创建了一个名为 allProjects 的存储库 以下是 allProjects 结构 所有项目 Projects projectA projectB projectC projectD projectE 现在我正在尝试创建另一
  • 当 ASP.NET 5 (vNext) 无法重定向绑定时我该怎么办?

    我刚刚接触 MVC 6 我安装了 VS 2015 并使用默认设置ASP NET 5 preview MVC Web Application模板在本地 IIS 下一切运行良好 然后我尝试使用以下命令切换默认 DI 容器StructureMap
  • 如何访问输出阶段的 Mapper/Reducer 计数器?

    我在 Mapper 类中创建了一些计数器 使用 appengine mapreduce Java 库 v 0 5 编写的示例 Override public void map Entity entity getContext increme
  • RewriteCond 文件存在

    这么简单的问题但我和htaccess却一直相处不来 如果文件存在 则提供该文件 如果 URI 只是 并且 index html 存在 则提供 index html 否则提供 app php 这是 htaccess Disable the d
  • 如何在 ASP.NET 表单上设置必需的复选框?

    我对此进行了一些搜索 并且找到了几个部分答案 但是没有任何东西让我感到温暖模糊 这是执行此操作的正确方法 要回答针对此问题最常见的投诉 复选框可以有两种合法状态 选中和未选中 这是一个 我接受条款和条件 复选框 必须选中该复选框才能完成注册
  • 将 LINQ 结果转换为 ObservableCollection

    事实上 它是 LINQ 结果可能与该问题无关 但无论如何我都会提到它 因为这是导致该问题的上下文 我运行 LINQ 查询 结果是 IEnumerable
  • 颤动箭头标签栏?

    How I can make the cursor of tab bar with an arrow like this 您可以使用自定义画家和选项卡指示器来实现您的愿望指示器 import package flutter material
  • 使用 TypeScript 的条件类型

    假设我有这个 type TypeMapping Boolean boolean String string Number number ArrayOfString Array
  • 如何在 Rust 结构中保存迭代器

    我正在尝试这样做 struct RwindIter iter Box
  • 需要帮助,出现错误“TypeError: __init__() 需要 5 个位置参数,但给出了 6 个”

    我刚刚开始上课并理解基本概念 但是我不明白为什么它会给我这个错误 My code import pygame pygame init screen pygame display set mode 400 300 done False whi
  • 使用 AND 运算符进行 Mongoose 文本搜索

    所以我想做的是用 mongoose 到 mongoDb 进行 AND 搜索 但结果来自 OR 搜索 有这方面的设置吗 查询如下所示 exampleModel find text search searchParams score meta
  • React js Web应用程序中的溢出问题

    这是我正在使用的样式表 在移动设备和平板电脑视图中使用此功能时会出现溢出问题 但在桌面视图中则没有任何问题 任何人都可以为此提出解决方案吗 我正在开发一个reactjs web应用程序并托管在firebase中 如果我添加较少数量的技术语言
  • 如何让两个tooltip id独立关闭,并记住cookie?

    我正在尝试使用 jQuery HTML 和 CSS 制作工具提示 每个工具提示的 ID 都不同 而且效果很好 因此我可以根据需要制作任意数量的工具提示并独立设置它们的样式 我不明白的是如何在不影响其他工具提示的情况下关闭工具提示 我使用 R
  • 无限水平滚动UIScrollView

    我有一个 UIScrollView 其内容大小为 1200x480 我上面有一些图像视图 其宽度加起来为 600 当向右滚动时 我只需增加内容大小并设置偏移量 以使一切变得平滑 然后我想添加其他图像 但这并不重要现在 所以基本上 当前在视口
  • 如何在没有 Ajax Toolkit 的情况下显示加载图像直到 gridview 完全加载?

    QUESTION 谁能建议如何在 gridview 完全加载之前显示加载图像 该网格视图将在页面加载时呈现 必须有一个简单的解决方案来检测 gridview 何时加载 加载 以便可以实现加载图像和 gridview 可见性之间的简单切换 请