出错信息:
类型“DataGridLinkButton”的控件“DataGrid1__ctl1__ctl0”必须放在具有 runat=server 的窗体标记内。

解决方案 »

  1.   

    Html视图中在<body>下加<Form runat=server>,在 </body>上加上</form>服务器端控件必须放在标识为 runat=server的 form里
      

  2.   

    <form id="form1" runat="server">
    <asp:DataGrid id="DataGrid1" runat="server" />
    </form>also
    this.DataGrid1.RenderControl(hw); 
    ====>
    form1.DataGrid1.RenderControl(hw); if you have other stuffs in <form>, you might need to remove those stuffs from tw.ToString()
      

  3.   

    sorrythis.DataGrid1.RenderControl(hw); 
    ====>
    this.form1.RenderControl(hw);
      

  4.   

    谢谢!找到原因了我在DataGrid1中加了一列中有一HyperLink1控件所以出错,
    怎么去掉这列呢?
      

  5.   

    在应用此模板列的情况下,如何将其他列到出来?或用数据源DataView直接导出。
      

  6.   

    if your columns are declaratively added, tryDataGrid1.Columns.RemoveAt(n);
      

  7.   

    谢谢帮助,DataGrid1.Columns.RemoveAt(0);不能去掉第一列,
    另只要DataGrid1中有控件就不行,
    现将解决办法写出来如果谁有更好的请告诉我DataGrid DataGrid2=new DataGrid();
    DataSet dataSet1=(DataSet)Cache["Sort"];//此处是数据源
    DataView sortView1=new DataView(dataSet1.Tables["yybb"]);
    DataGrid2.DataSource=sortView1;
    DataGrid2.DataBind();
    //下面将DataGrid2输出到Excel文件
    Response.Clear();
    Response.AddHeader("Content-Disposition", "attachment; filename=exportfilename.xls"); 
    Response.Charset = "utf-8"; 
    Response.ContentEncoding=System.Text.Encoding.Default;
    Response.ContentType = "application/vnd.ms-excel"; 
    //Response.Charset = ""; 
    this.EnableViewState= false; 
    System.IO.StringWriter tw = new System.IO.StringWriter(); 
    HtmlTextWriter hw = new HtmlTextWriter(tw);
    DataGrid2.RenderControl(hw); 
    Response.Write(tw); 
    Response.End();