0
我收到错误“控件集合无法修改,因为控件包含代码块”。 我想将GridView导出到Excel。Gridview to excel:控件集合无法修改,因为控件包含代码块
我的方法是:(它的工作原理我已经测试过)
private void excel()
{
string dosyaadi;
dosyaadi = "Rapor.xls";
String attachment = "attachment; filename=" + dosyaadi;
Response.Clear();
Response.ClearHeaders();
Response.ClearContent();
Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1254");
Response.Charset = "windows-1254";
Response.AddHeader("content-disposition", attachment);
Response.ContentType = "application/ms-excel";
System.IO.StringWriter sw = new System.IO.StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
HtmlForm frm = new HtmlForm();
gvListele.Parent.Controls.Add(frm);
frm.Controls.Add(gvListele);
frm.RenderControl(htw);
Response.Write(" <meta http-equiv='Content-Type' content='text/html; charset=windows-1254' />" + sw.ToString());
Response.End();
}
和GridView:
<asp:GridView ID="gvListele" runat="server" AutoGenerateColumns="False" BackColor="White"
BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="3">
<Columns>
<asp:BoundField DataField="talepNo" HeaderText="Talep No" />
<asp:BoundField DataField="urunAdi" HeaderText="İçerik" />
<asp:BoundField DataField="talepEdenBirim" HeaderText="Talep Eden Birim" />
<asp:BoundField DataField="talepKomisyonGelisTarih" HeaderText="Komisyona Geliş Tarihi" />
<asp:BoundField DataField="alimUsulu" HeaderText="Alım Usulü" />
<asp:TemplateField ControlStyle-Width="150" HeaderText="Onay">
<ItemTemplate>
<asp:RadioButton ID="rbOnaylandi" runat="server" Text="Onaylandı" GroupName="rblOnay" />
<asp:RadioButton ID="rbBekletildi" runat="server" Text="Bekletildi" GroupName="rblOnay" />
<asp:RadioButton ID="rbReddedildi" runat="server" Text="Reddedildi" GroupName="rblOnay" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="White" ForeColor="#000066" />
<HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
<RowStyle ForeColor="#000066" />
<SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
<SortedAscendingCellStyle BackColor="#F1F1F1" />
<SortedAscendingHeaderStyle BackColor="#007DBB" />
<SortedDescendingCellStyle BackColor="#CAC9C9" />
<SortedDescendingHeaderStyle BackColor="#00547E" />
</asp:GridView>
是的,这就是问题所在。我加了2条线,瞧!谢谢 gvListele.GridLines = GridLines.Both; gvListele.RenderControl(hw); – blackraist 2012-01-13 11:50:06