Infragistics WebHierarchicalDataGrid中的ContainerGridDataBinding

时间:2012-08-16 21:46:49

标签: data-binding infragistics

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

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

如果在WHDG的子频段上保持相同的行为,也会很棒

2 个答案:

答案 0 :(得分: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();
    }

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

答案 1 :(得分:0)

事实证明这比我想象的容易得多。在每个PageIndexChanged事件上(甚至由自定义分页器引起,可以是自定义UserControl)我将WHDG绑定到一个假的空数据集,导致ContainerGridDataBinding触发,其中仅从DB中检索当前页面的数据