Toon posts:

[C# ASPX] gesorteerde gridview exporteren naar Excel

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik heb een website waar partners gegevens uit kunnen halen en deze kunnen exporteren naar Excel.

Dit gaat goed.

Alles is geschreven met Visual Studio en de taal c#

Als ze de gridview sorteren, op bijvoorbeeld datum en dan willen exporteren, dan werkt dat niet. De excel is dan niet gesorteerd.

Hieronder de code van het exporteren.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 protected void ExportExcel_Click(object sender, EventArgs e)
   {
     PrepareGridViewForExport(GridView1);
     ExportGridView();
    }
   private void ExportGridView()
   {
    string attachment = "attachment; filename=Contacts.xls";
    Response.ClearContent();
    Response.AddHeader("content-disposition", attachment);
    Response.ContentType = "application/ms-excel";
    StringWriter sw = new StringWriter();
    HtmlTextWriter htw = new HtmlTextWriter(sw);
    GridView1.RenderControl(htw);
    Response.Write(sw.ToString());
    Response.End();
   }
  public override void VerifyRenderingInServerForm(Control control)
  {
   }
  private void PrepareGridViewForExport(Control gv)
  {
   LinkButton lb = new LinkButton();
   Literal l = new Literal();
   string name = String.Empty;
    for (int i = 0; i < gv.Controls.Count; i++)
    {
     if (gv.Controls[i].GetType() == typeof(LinkButton))
     {
      l.Text = (gv.Controls[i] as LinkButton).Text;
      gv.Controls.Remove(gv.Controls[i]);
      gv.Controls.AddAt(i, l);
     }
    else if (gv.Controls[i].GetType() == typeof(DropDownList))
    {
      l.Text = (gv.Controls[i] as DropDownList).SelectedItem.Text;
      gv.Controls.Remove(gv.Controls[i]);
      gv.Controls.AddAt(i, l);
     }
     else if (gv.Controls[i].GetType() == typeof(CheckBox))
     {
      l.Text = (gv.Controls[i] as CheckBox).Checked ? "True" : "False";
      gv.Controls.Remove(gv.Controls[i]);
      gv.Controls.AddAt(i, l);
      }
    if (gv.Controls[i].HasControls())
   {
     PrepareGridViewForExport(gv.Controls[i]);
    }
  }


Mijn gridview heet "Gridview1"

Ben ook al volop aan het zoeken, maar blijkbaar heeft niemand hetzelfde probleem.

iemand een idee of een voorbeeld?

Acties:
  • 0 Henk 'm!

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 15:59
Komt dit niet misschien omdat als je op de knop klikt er een Postback uitgevoerd wordt die ervoor zorgt dat de gridview in zijn originele staat gezet wordt van voor de sortering en dan pas als download aangeboden wordt? Dat zou een mogelijk oorzaak kunnen zijn lijkt mij.

Hail to the king baby!