Как подключить DataSource к UniGrid в Kentico

Как я могу подключить DataSource для UniGrid. Я создал собственный фильтр, и он работает, как и ожидалось, с веб-частями PagesDataSource и BasicRepeater. Но теперь я должен получить тот же источник данных для UniGrid.

Как я могу это сделать?

ОБНОВЛЕНИЕ:

Кентико версии 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;
}

ОБНОВЛЕНИЕ 2:

Я удалил DataBind, но он все еще не работает.


person I need your help    schedule 21.10.2015    source источник


Ответы (1)


Поскольку UniGrid не является веб-частью, вы не можете привязать ее к веб-части PagesDataSource. Однако вы по-прежнему можете использовать базовый серверный элемент управления CMSDocumentsDataSource (из пространства имен CMS.Controls). Если вы настроите все его свойства так, как если бы это была веб-часть PagesDataSource, все должно работать нормально. Затем вы можете привязать к нему свойство 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 и тому, как их настроить. с помощью разметки ASPX и файла определения XML.

person rocky    schedule 21.10.2015
comment
Благодарю за ваш ответ. Но мне все еще нужна помощь. Я добавил ‹cms:CMSDocumentsDataSource ID=frameDocuments runat=server /› в файл ascx, настроил его в Page_Load и настроил собственный фильтр по свойству FilterName, но теперь мой экземпляр Kentico не работает с FrameGrid.DataSource = frameDocuments.DataSource ; FrameGrid.DataBind(); конфигурация. Можете ли вы помочь мне с этим? - person I need your help; 22.10.2015
comment
Нет, не могли бы вы помочь мне с проблемой в предыдущем комментарии? - person I need your help; 22.10.2015
comment
Насколько я знаю, в UniGrid нет метода DataBind(). Можете ли вы обновить свой вопрос с помощью разметки ASPX + соответствующего кода программной части? Также было бы неплохо узнать, какой версией Kentico вы пользуетесь... - person rocky; 22.10.2015
comment
Должен ли я удалить метод DataBind? - person I need your help; 22.10.2015
comment
DataBind не требуется — UniGrid загрузит данные во время события Page_Load. - person rocky; 22.10.2015
comment
И где я должен установить этот unigrid.DataSource = datasource.DataSource; ? - person I need your help; 22.10.2015
comment
Проверьте обновленный ответ. Я только что проверил это в Kentico 8.2. Если вам нужна дополнительная настройка, сначала посмотрите документацию, там все есть. - person rocky; 22.10.2015