你是为了导出特定的文件吗?
我试了一下没有问题:
DataTable dt = new DataTable();
dt.Columns.Add("Name",typeof(System.String));
dt.Columns.Add("URL",typeof(System.String));
DataRow dr = dt.NewRow();
dr["Name"] = "CSDN";
dr["URL"] = "Http://www.csdn.net";
DataRow dr2 = dt.NewRow();
dr2["Name"] = "BLUEIDEA";
dr2["URL"] = "Http://www.blueidea.com";
dt.Rows.Add(dr);
dt.Rows.Add(dr2);
dt.AcceptChanges();
DataGrid1.DataSource = dt;
DataGrid1.DataBind();
foreach (System.Web.UI.WebControls.DataGridColumn column in DataGrid1.Columns)
{
if(column is System.Web.UI.WebControls.ButtonColumn)
{
column.Visible = false;
}
} Response.Clear();
Response.Buffer= true;
Response.ContentType = "application/vnd.ms-excel";
Response.Charset = "";
this.EnableViewState = false; System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
DataGrid1.RenderControl(oHtmlTextWriter); Response.Write(oStringWriter.ToString());
Response.End();

解决方案 »

  1.   

    To  mmkk() 
    是的,我在导出时要把按钮列隐藏,导出后再显示出来。
    但在第一次RenderControl后,设置按钮列的Visible为True没有作用。而不隐藏,按钮列中的LinkButton在RenderControl时会出错,提示必须放在<Form runat="server">中你在导出时对LinkButton是怎么处理的,谢谢你的回帖
      

  2.   

    对于linkbutton的列,你可以显式隐藏就没有问题.比如第一列ItemTemplate包含linkbutton,可以显式DataGrid1.Columns[0].Visible = false;
      

  3.   

    我就是这样做的,但Visible = false 进行RenderControl之后,再True就不起作用了,该怎么办呢
      

  4.   

    DataGrid1.Columns[0].Visible = false;
    Response.Clear();
    Response.Buffer= true;
    Response.ContentType = "application/vnd.ms-excel";
    Response.Charset = "";
    this.EnableViewState = false; System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
    DataGrid1.RenderControl(oHtmlTextWriter);
    DataGrid1.Columns[0].Visible = true;
    Response.Write(oStringWriter.ToString());
    你最好是能够通过一个Button来执行这个导出的操作,也就是说让DataGrid先显示出来,倒出的时候再隐藏