如何在Kentico中将DataSource附加到UniGrid

时间:2015-10-21 12:34:07

标签: c# kentico

如何为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,但它仍然不起作用。

1 个答案:

答案 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进行设置。