我正在尝试使用Infragistics WebHierarchicalDataGrid控件中的自定义数据绑定实现分页。当用户单击WHDG寻呼机中的页面链接时所需的行为是从后端检索一页数据(我已经有一台SQL Server SP执行此操作)并将其绑定到WHDG以一次显示1页。
我相信使用“ContainerGridDataBinding”事件是这样做但无法设置工作代码的方法。任何有关如何操作的帮助或代码示例都非常感谢。
如果在WHDG的子频段上保持相同的行为,也会很棒
答案 0 :(得分:2)
获得SQL请求/选择命令后,您将获得一个页面,您将需要创建一个自定义寻呼机来执行此操作。然后,在与分页器中的按钮/下拉列表或其他控件绑定的事件中,您将调用SQL命令。有关如何为WebDataGrid实现自定义分页器,请参阅以下内容:
对于父带,对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中检索当前页面的数据