title: nested gridview export to excel, asp.net c#
body: <p>I want to export the parent grid view and nested gridview to an excel.</p>
  
  <p>I have a code that only work to export a normal simple gridview.
  Tried to debug the code, found there is no error or whatsoever.</p>
  
  <p>It is just after i click the export button, it doesnt export to excel.</p>
  
  <p>here is my code</p>
  
  <pre><code> protected void asd()
  {
  
      string title = "";
      string attempt = "SELECT * FROM Poll Where PollID = '" + Session["abc"] + "'";
  
      cmd = new SqlCommand(attempt, con);
      dr = cmd.ExecuteReader();
      while (dr.Read())
      {
          title = dr["PollTitle"].ToString();
      }
  
      string filename = String.Format(title + " RESULTS. " + "{0}_{1}.xls",
   DateTime.Today.Month.ToString(), DateTime.Today.Year.ToString());
  
      Response.Clear();
      Response.AddHeader("Content-Disposition", "attachment;filename=" + filename);
      Response.Charset = "";
  
      // SetCacheability doesn't seem to make a difference (see update)
      Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
  
      Response.ContentType = "application/vnd.xls";
  
      System.IO.StringWriter stringWriter = new System.IO.StringWriter();
      System.Web.UI.HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter);
  
      // Replace all gridview controls with literals
      ClearControls(GridView3);
  
      // Throws exception: Control 'ComputerGrid' of type 'GridView'
      // must be placed inside a form tag with runat=server.
      // ComputerGrid.RenderControl(htmlWrite);
  
      // Alternate to ComputerGrid.RenderControl above
      System.Web.UI.HtmlControls.HtmlForm form
          = new System.Web.UI.HtmlControls.HtmlForm();
      Controls.Add(form);
      form.Controls.Add(GridView3);
      form.RenderControl(htmlWriter);
  
      Response.Write(stringWriter.ToString());
      Response.End();
  }
  
  private void ClearControls(Control control)
  {
      for (int i = control.Controls.Count - 1; i &gt;= 0; i--)
      {
          ClearControls(control.Controls[i]);
      }
  
      if (!(control is TableCell))
      {
          if (control.GetType().GetProperty("SelectedItem") != null)
          {
              LiteralControl literal = new LiteralControl();
              control.Parent.Controls.Add(literal);
              try
              {
                  literal.Text =
                      (string)control.GetType().GetProperty("SelectedItem").
                          GetValue(control, null);
              }
              catch
              { }
              control.Parent.Controls.Remove(control);
          }
          else if (control.GetType().GetProperty("Text") != null)
          {
              LiteralControl literal = new LiteralControl();
              control.Parent.Controls.Add(literal);
              literal.Text =
                  (string)control.GetType().GetProperty("Text").
                      GetValue(control, null);
              control.Parent.Controls.Remove(control);
          }
      }
      return;
  
  }
  protected void Export_buttonClick(object sender, EventArgs e)
  {
      asd();
  }
  </code></pre>
  
  <p>this code is working for a normal gridview, but not the one with nested gridview.</p>