导出到excel文件时隐藏子网格视图列

本文关键字:网格 视图 隐藏 excel 文件 | 更新日期: 2023-09-27 17:57:59

当使用可见选项将网格视图导出到excel文件时,我可以隐藏父网格视图中的列。

但我也需要在子网格视图中隐藏一些列。

我怎样才能做到这一点?

导出代码

protected void btnexcel_Click(object sender, EventArgs e)
{
    try
    {
        gridItem.DataSource = i.GetItems();
        Response.Clear();
        Response.Buffer = true;
        Response.AddHeader("content-disposition",
         "attachment;filename=Items.xls");
        Response.Charset = "";
        Response.ContentType = "application/vnd.ms-excel";
        StringWriter sw = new StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(sw);
        gridItem.GridLines = GridLines.Both;
        gridItem.DataBind();
        gridItem.Columns[0].Visible = false;
        gridItem.RenderControl(hw);
        //style to format numbers to string
        string style = @"<style> .textmode { mso-number-format:'@; } </style>";
        Response.Write(style);
        Response.Output.Write(sw.ToString());
        Response.Flush();
        Response.End();
    }
    catch (Exception ex)
    {
        Response.Write("Error: " + ex.Message);
    }
}

Aspx代码

<asp:GridView ID="gridItem" GridLines="None" OnRowDataBound="gridItem_RowDataBound" OnRowCommand="gridItem_RowCommand" DataKeyNames="ItemID" runat="server" CssClass="table" AutoGenerateColumns="False">
    <Columns>
        <asp:TemplateField HeaderText="Preview">
            <ItemTemplate>
                <asp:Image ID="imgPlus" runat="server" AlternateText="" ImageUrl="img/plus.png" Style="cursor: pointer" />
                <asp:Panel ID="pnItemdt runat="server" Style="display: none">
                    <asp:GridView ID="gvItemdt" CssClass="table table-bordered" runat="server" OnRowCommand="gvItemdt_RowCommand" AutoGenerateColumns="false">
                        <Columns>
                            <asp:TemplateField HeaderText="Edit">
                                <ItemTemplate>
                                    <asp:LinkButton ID="LinkButton1" OnClientClick="gotop()" runat="server" CssClass="btn btn-primary btn-xs" CausesValidation="False" CommandName="Editob" Text=""><i class="glyphicon glyphicon-pencil"></i></asp:LinkButton>
                                </ItemTemplate>
                                <ControlStyle CssClass="btn btn-primary" />
                            </asp:TemplateField>
                            <asp:BoundField DataField="Name" HeaderText="Store Name" />
                        </Columns>
                        <EmptyDataTemplate>
                            "No records found"
                        </EmptyDataTemplate>
                    </asp:GridView>
                </asp:Panel>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="ItemCode" HeaderText="Item Code" SortExpression="ItemCode" />
        <asp:BoundField DataField="ItemName" HeaderText="Item Name" SortExpression="ItemName" />
    </Columns>
</asp:GridView>

提前谢谢。

导出到excel文件时隐藏子网格视图列

通常,您可以使用gridView.FindControl("id-of-control")访问GridView中的控件。

在这种情况下,您可能会这样做。

gridItem.FindControl("gvItemdt") //this gets you the GridView control
//you can use DirectCast to call a GridView function on the object
DirectCast(gridItem.FindControl("gvItemdt"), GridView).Visible=False

这就是访问内部GridView的方式,并将其设置为visible=false。如果您想访问内部GridView中的特定列或控件,只需在gridItem.FindControl("gvItemdt") GridView上调用相同的.FindControl()函数即可。或者通过列和行访问项目,不管您想怎么做。