0

我正在尝试使用 Infragistics WebHierarchicalDataGrid 控件中的自定义数据绑定来实现分页。当用户在 WHDG 寻呼机中单击页面链接时,期望的行为是从后端检索一页数据(我已经有一个 SQL Server SP 可以执行此操作)并将其绑定到 WHDG 以一次显示一页。

我相信使用“ContainerGridDataBinding”事件是这样做的方法,但无法设置工作代码。非常感谢任何有关如何执行此操作的帮助或代码示例。

如果 WHDG 的子乐队继续存在同样的行为,那就太好了

4

2 回答 2

2

一旦您有了 SQL 请求/选择命令,您将获得一个页面,您将需要创建一个自定义寻呼机来执行此操作。然后在与您在寻呼机中的按钮/下拉菜单或其他控件相关的事件中,您将调用您的 SQL 命令。请参阅以下内容了解如何为 WebDataGrid 实现自定义寻呼机:

http://help.infragistics.com/NetAdvantage/ASPNET/2012.1/CLR4.0/?page=WebDataGrid_Using_Custom_Paging_Template.html

通过代码自定义寻呼机: http ://help.infragistics.com/NetAdvantage/ASPNET/2012.1/CLR4.0/?page=WebDataGrid_Using_Custom_Paging_Template_in_Code.html

为 WebHierarchicalDataGrid 执行此操作与父带区相同。对于孩子,你会想要为那个乐队而不是父乐队的行为做这件事。

现在,如果您不想在寻呼机中使用按钮和/或下拉菜单,而是想要链接(1、2、3、4 等),可以通过在代码中执行以下操作来完成:

    private class CustomItemTemplate : ITemplate
    {
        #region ITemplate Members

        public void InstantiateIn(Control container)
        {
            for (int i = 0; i < 3; i++)
            {
                LiteralControl link = new LiteralControl();
                //class for current page: igg_PageCurrent
                //class for other pages: igg_PageLink
                link.Text = "<span class='igg_PageLink' idx='" + i.ToString() + "'>" + (i+1).ToString() + "</span>";

                container.Controls.Add(link);
            }
        }

        #endregion
    }

    protected void Page_PreInit(object sender, EventArgs e)
    {
        whdg1.Behaviors.Paging.PagerTemplate = new CustomItemTemplate();
    }

但真正的问题是,以这种方式从数据库中获取数据时,您只能为一页获取足够的数据,因此网格不知道数据库中有多少页。所以你要么需要知道如何找到它,要么只知道它。这也将使子带的实现更加困难,因为您需要知道每一行可以扩展多少子记录或记录页。

于 2012-09-18T18:05:41.243 回答
0

结果比我想象的要容易得多。在每个 PageIndexChanged 事件上(甚至是由自定义寻呼机引起的,它可以是自定义 UserControl)我将 WHDG 绑定到一个假的空数据集,导致 ContainerGridDataBinding 触发,其中仅从数据库中检索当前页面的数据

于 2012-09-18T19:56:27.860 回答