【问题标题】:Enhanced paging for asp:gridview anyone know of some solutions?asp:gridview 的增强分页有人知道一些解决方案吗?
【发布时间】:2017-03-23 18:01:51
【问题描述】:

我真的对 asp:gridview 寻呼机选项开箱即用的东西感到沮丧: - 下一个上一个 - NextPreviousFirstLast - 数字 - NumericFirstLast

我正在处理一个网格视图,出于实际目的,为了良好的管理,它一次不应该超过 10 行。但是,这样做时没有对源引用表进行任何过滤,这意味着我们要处理 396 页,每页 10 行,以覆盖寻呼机中表的内容。对于下面的默认设备或我在此处显示的原始目标等设备,这根本不是实用的导航。

但我想得越多,即使这样也很费力地翻阅 396 页的数据。更好的是某种滑块或其他机制。

所以我想在这里解决这个问题,看看是否有人有解决方案来增强默认寻呼机或替换它,以提供更好的方法来处理像我在这里处理的大量数据。

想法?

【问题讨论】:

  • 如果 GridView 控件不能满足您的需求,那么请找到可以满足您需求的东西。使用 JavaScript 和 CSS 实现的表格/网格工具的网络搜索可能会找到很多有用的东西。然后是那些对 ASP.NET 足够具体且易于查找的内容。做一点研究!
  • 嗯,寻呼机是唯一让我不感兴趣的部分。其余的我都很满意。

标签: c# asp.net gridview


【解决方案1】:

您可以自己创建寻呼机。

我能想到的方法有两种。第一个是在 GridView 的OnRowCreated 事件上创建自己的寻呼机。在那里,您可以投射寻呼机的Table 并按照您认为合适的方式重建它。我用它来为页码添加一个View all 链接。

第二个选项是使用 JavaScript 的客户端解决方案。这是一个sn-p。诀窍在于,Pager 项目只不过是一个带有 javascript 的链接,看起来像这样。

<a href="javascript:__doPostBack('ctl00$mainContentPane$GridView1','Page$14&')">14</a> 

您可以使用该信息在其他地方重新创建新链接。

第一件事是设置PagerSettings-PageButtonCount 以确保它包含页面上所有可能的寻呼机号码,否则您将获得invalid postback or callback argument

然后给寻呼机一个带有PagerStyle-CssClass的CSS类。

GridView 控件现在看起来像这样:

<asp:GridView ID="GridView1" runat="server" AllowPaging="true" PageSize="10" PagerStyle-CssClass="gridPager" PagerSettings-PageButtonCount="100" OnPageIndexChanging="GridView1_PageIndexChanging">

并将其添加到 .aspx 页面

<style>
    /* hides the original pager */
    .gridPager {
        display: none;
    }
</style>
<script type="text/javascript">
    $(document).ready(function () {
        //get the gridview name
        var gridViewName = "<%= GridView1.UniqueID %>";

        //get the current page number
        var currentPage = <%= GridView1.PageIndex + 1 %>;

        //loop some custom page count
        for (var i = 5; i <= 10; i++) {
            //add the new pager links to the customPager div
            if (i == currentPage) {
                document.getElementById('customPager').innerHTML += i + "<br>";
            } else {
                document.getElementById('customPager').innerHTML += '<a href="javascript:__doPostBack(\'' + gridViewName + '\',\'Page$' + i + '\')">Page ' + i + '</a><br>';
            }
        }
    });
</script>

<div id="customPager"></div>

【讨论】:

  • 感谢您的示例...这表明我可以做到。我拿了你的样本并将其调整到我的 gridview 并用它进行了测试。它打印十行以 1-10 递增,并在页面前添加链接,效果很好。这当然不会接近处理 396 页(或实用),但给了我希望和考虑的地方。我不精通 JS,所以我会四处寻找,看看我能找到什么可以解决问题。谢谢!
猜你喜欢
  • 1970-01-01
  • 2022-10-18
  • 2015-03-24
  • 2021-03-15
  • 2010-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多