Telerik Grid - 导出为CSV的列比屏幕上显示的列多

时间:2010-12-21 03:01:11

标签: asp.net telerik

问题:如何在Telerik网格中显示的列数多于渲染网格中显示的数量?

例如,我只想在屏幕上显示Surname,但在转储到csv时也会想要名字。

我在GridBoundColumns上尝试过visible = false和display = false,但是它们没有出现在csv上。

<telerik:RadGrid ID="grdAuctions" runat="server" AllowAutomaticDeletes="True" AllowAutomaticUpdates="True"
        AllowPaging="False" AllowSorting="True" AutoGenerateColumns="False" DataSourceID="odsAuctionSales"
        GridLines="None" EnableEmbeddedSkins="False" OnItemDataBound="grdAuctionSales_ItemDataBound">
        <ExportSettings HideStructureColumns="true" />
        <MasterTableView Width="100%" CommandItemDisplay="Top">
            <PagerStyle Mode="NextPrevNumericAndAdvanced" />
            <CommandItemSettings ShowAddNewRecordButton="false" ShowRefreshButton="false" ShowExportToCsvButton="true"
                ExportToCsvImageUrl="~/Images/excel.jpg" ExportToCsvText="Export to csv" />
        </MasterTableView>
        <MasterTableView DataKeyNames="Id" DataSourceID="odsAuctionSales" CssClass="listItems"
            Width="98%">
            <SortExpressions>
                <telerik:GridSortExpression FieldName="Name"></telerik:GridSortExpression>
            </SortExpressions>
            <RowIndicatorColumn>
                <HeaderStyle Width="20px"></HeaderStyle>
            </RowIndicatorColumn>
            <ExpandCollapseColumn>
                <HeaderStyle Width="20px"></HeaderStyle>
            </ExpandCollapseColumn>
            <Columns>
                <telerik:GridTemplateColumn UniqueName="Edit">
                    <ItemTemplate>
                        <asp:HyperLink ID="edit" runat="server" Text="Edit"></asp:HyperLink>
                    </ItemTemplate>
                </telerik:GridTemplateColumn>
                <telerik:GridBoundColumn DataField="NameOnTable" HeaderText="Name On Table" SortExpression="NameOnTable"
                    UniqueName="NameOnTable">
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="Surname" HeaderText="Surname" SortExpression="Surname"
                    UniqueName="Surname">
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="Firstname" HeaderText="Firstname" SortExpression="Firstname"
                    UniqueName="Firstname">
                </telerik:GridBoundColumn>

编辑以下是我的工作原理

protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e)
    {
        if (e.CommandName == RadGrid.ExportToCsvCommandName)
        {
            grdAuctions.MasterTableView.GetColumn("Edit").Visible = false;
            grdAuctions.MasterTableView.GetColumn("DPSAuthCode").Visible = true;
    grdAuctions.MasterTableView.ExportToCSV();
        }

    }

并在aspx中

OnItemCommand="RadGrid1_ItemCommand"

 <telerik:GridBoundColumn DataField="DPSAuthCode" HeaderText="DPSAuthCode" Visible="false"
                    SortExpression="DPSAuthCode" UniqueName="DPSAuthCode">
                </telerik:GridBoundColumn>

2 个答案:

答案 0 :(得分:3)

在导出调用之前切换Visible或Display属性值应该可以解决问题。有关详细信息,请查看相关部分(隐藏列)here

答案 1 :(得分:0)

我能给你的最好的想法是让控件显示它,然后使用jquery设置这些列上的显示。

另一种选择可能是将导出重载到csv函数,但是我对这个Telerik控件不够熟悉,无法给出任何指示。

相关问题