Telerik RadGrid не экспортирует сгруппированные данные - PullRequest
0 голосов
/ 05 января 2011

Привет! У меня есть приложение DNN, использующее Telerik RadGrid.Мы экспортируем некоторые данные из Grid, но когда мы детализируем элемент управления grid и экспортируем данные, мы видим только исходные данные верхнего уровня, но не обновленную Grid.Вот мой табличный тег и вспомогательный код.Я не эксперт в ASPX / C #, поэтому, пожалуйста, прости меня за новичок.

<mastertableview autogeneratecolumns="False" datakeynames="AccountId" datasourceid="SqlDataSource1"
    groupsdefaultexpanded="False">

    <DetailTables>
        <telerik:GridTableView runat="server" DataKeyNames="StatementId" DataSourceID="SqlDataSource2"
            Font-Bold="False" Font-Italic="False" Font-Overline="False" Font-Strikeout="False"
            Font-Underline="False" >
            <DetailTables>
                <telerik:GridTableView runat="server" DataSourceID="SqlDataSource3" Font-Bold="False"
                    Font-Italic="False" Font-Overline="False" Font-Strikeout="False" Font-Underline="False"
                    GroupsDefaultExpanded="False" ShowFooter="True" ShowGroupFooter="True" AllowMultiColumnSorting="True"
                    GridLines="None">
                    <ParentTableRelation>
                        <telerik:GridRelationFields DetailKeyField="StatementId" MasterKeyField="StatementId" />
                    </ParentTableRelation>

                    <AlternatingItemStyle BackColor="White" Font-Bold="False" Font-Italic="False" Font-Overline="False"
                        Font-Strikeout="False" Font-Underline="False" Wrap="True" />
                    <HeaderStyle Font-Bold="False" Font-Italic="False" Font-Overline="False" Font-Strikeout="False"
                        Font-Underline="False" Wrap="True" />
                    <FooterStyle BackColor="Yellow" Font-Bold="False" Font-Italic="False" Font-Overline="False"
                        Font-Strikeout="False" Font-Underline="False" Wrap="True" />
                </telerik:GridTableView>
            </DetailTables>
            <ParentTableRelation>
                <telerik:GridRelationFields DetailKeyField="AccountId" MasterKeyField="AccountId" />
            </ParentTableRelation>
            <CommandItemSettings ExportToPdfText="Export to Pdf" />
            <ExpandCollapseColumn Visible="True">
            </ExpandCollapseColumn>
        </telerik:GridTableView>
    </DetailTables>
    <ParentTableRelation>
        <telerik:GridRelationFields DetailKeyField="AccountId" MasterKeyField="AccountId" />
    </ParentTableRelation>

    <ExpandCollapseColumn Visible="True">
    </ExpandCollapseColumn>
    <Columns>
        <telerik:GridBoundColumn DataField="ACCOUNTID" DataType="System.Int32" HeaderText="ACCOUNTID"
            SortExpression="ACCOUNTID" UniqueName="ACCOUNTID">
        </telerik:GridBoundColumn>
        <telerik:GridBoundColumn DataField="ACCOUNTREF" HeaderText="ACCOUNTREF" SortExpression="ACCOUNTREF"
            UniqueName="ACCOUNTREF">
        </telerik:GridBoundColumn>
        <telerik:GridBoundColumn DataField="CUSTOMERID" DataType="System.Int32" HeaderText="CUSTOMERID"
            SortExpression="CUSTOMERID" UniqueName="CUSTOMERID">
        </telerik:GridBoundColumn>
    </Columns>
</mastertableview>

Экспорт регистрируется в диспетчере сценариев под нагрузкой:

protected void Page_Load(object sender, EventArgs e)
{
    Button2.Enabled = Session[UserSelection.SelectedValue] != null ? true : false;
    ScriptManager.GetCurrent(Page).RegisterPostBackControl(Button3); 
    ScriptManager.GetCurrent(Page).RegisterPostBackControl(Button4); 
}

, и я вызываю экспорт со следующими данными:

protected void Button3_Click(object sender, System.EventArgs e)
    {
        //ConfigureExport();
       RadGrid1.Rebind();
       RadGrid1.ExportSettings.FileName = "RadGridExportToExcel";
       RadGrid1.ExportSettings.ExportOnlyData = true;
       RadGrid1.ExportSettings.OpenInNewWindow = true;

        RadGrid1.MasterTableView.ExportToExcel();
    }

Может кто-нибудьпосмотрите, что мне не хватает, кроме опыта DNN / ASPX и желания жить :)

1 Ответ

0 голосов
/ 06 января 2011

Решено: но не полностью ... Добавив следующее

RadGrid1.MasterTableView.HierarchyDefaultExpanded = true;

к событию button_click, например:

protected void Button3_Click(object sender, System.EventArgs e)
    {
        //ConfigureExport();
       RadGrid1.Rebind();
       RadGrid1.MasterTableView.HierarchyDefaultExpanded = true;
       RadGrid1.ExportSettings.FileName = "RadGridExportToExcel";
       RadGrid1.ExportSettings.IgnorePaging = true;
       RadGrid1.ExportSettings.ExportOnlyData = true;
       RadGrid1.ExportSettings.OpenInNewWindow = true;

        RadGrid1.MasterTableView.ExportToExcel();
    }

Хотя это просто дает группировку первого уровня, никакой субгрупп.Кроме того, он не только экспортирует выбранные вами данные детализации, но и расширяет представление всей сетки на первый уровень ... Наконец, чтобы получить третичную детальную таблицу, вы можете добавить

RadGrid1.MasterTableView.DetailTables[0].HierarchyDefaultExpanded = true;

Это вызвало ошибку OOM в DNN для меня:

A critical error has occurred.
Exception of type 'System.OutOfMemoryException' was thrown.

Я предполагаю, что вам придется выполнить какую-то обработку событий, вручную открыть данные в модальном окне и экспортировать их вместо этого.

...