如何为UniGrid附加DataSource。我创建了自定义过滤器,它与PagesDataSource和BasicRepeater Web部件一样正常工作。但是现在我应该为UniGrid获得相同的数据源。
我怎么能这样做?
更新
Kentico版本8.2
ASCX:
<%@ Register Src="~/CMSAdminControls/UI/UniGrid/UniGrid.ascx" TagName="UniGrid" TagPrefix="cms" %>
<%@ Register Namespace="CMS.UIControls.UniGridConfig" TagPrefix="ug" Assembly="CMS.UIControls" %>
<cms:CMSDocumentsDataSource ID="myDocuments" runat="server" />
代码:
protected void Page_Load(object sender, EventArgs e)
{
InitializingDataSource();
FrameGrid.DataSource = myDocuments.DataSource;
FrameGrid.DataBind();
}
private void InitializingDataSource()
{
myDocuments.FilterName = FilterName;
myDocuments.Path = ContentPath;
myDocuments.LoadCurrentPageOnly = true;
myDocuments.LoadPagesIndividually = true;
myDocuments.SelectOnlyPublished = true;
}
UPDATE2:
我删除了DataBind,但它仍然不起作用。
答案 0 :(得分:0)
由于UniGrid
不是网络部分,因此您无法将其绑定到PagesDataSource
网络部分。但是,您仍然可以使用基础服务器控件CMSDocumentsDataSource
(来自CMS.Controls
命名空间)。如果您将其所有属性设置为PagesDataSource
Web部件,那么它应该可以正常工作。然后,您可以将UniGrid的DataSource
属性绑定到它。
ASPX:
<%@ Register Src="~/CMSAdminControls/UI/UniGrid/UniGrid.ascx" TagName="UniGrid" TagPrefix="cms" %>
<%@ Register TagPrefix="ug" Namespace="CMS.UIControls.UniGridConfig" Assembly="CMS.UIControls, Version=8.0.0.0, Culture=neutral, PublicKeyToken=834b12a258f213f9" %>
<cms:CMSDocumentsDataSource runat="server" ID="src" Path="/%" />
<cms:UniGrid runat="server" ID="grd" DelayedReload="True">
<GridColumns>
<ug:Column Source="DocumentName" Name="DocumentName" runat="server" />
</GridColumns>
</cms:UniGrid>
代码隐藏:
protected void Page_Load(object sender, EventArgs e)
{
grd.DataSource = ((DataView)src.DataSource).Table.DataSet;
grd.ReloadData();
}
查看UniGrid
的{{3}}文档以及如何使用all possible ways of loading data进行设置。