删除复选框在导出的GridView到Excel [英] Remove Checkboxes while exporting Gridview to Excel
本文介绍了删除复选框在导出的GridView到Excel的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有需要导出到Excel的GridView。我已成功地删除行复选框,但不知道如何从标题中删除,也完全删除复选框列。感谢您的帮助。
< ASP:GridView控件ID =GridView1=服务器的AutoGenerateColumns =FALSE的cellpadding =4的DataKeyNames =ID>
<柱体和GT;
< ASP:的TemplateField的HeaderText =选择>
<&HeaderTemplate中GT;
<输入ID =chkAll的onclick =checkAll(本); =服务器类型=复选框/>
< / HeaderTemplate中>
<&ItemTemplate中GT;
< ASP:复选框ID =CheckBox1=服务器/>
< / ItemTemplate中>
< / ASP:的TemplateField>
< ASP:BoundField的数据字段=事件的HeaderText =事件SORTEX pression =事件/>
< ASP:BoundField的数据字段=EVENT_DESCRIPTION的HeaderText =EVENT_DESCRIPTIONSORTEX pression =EVENT_DESCRIPTION/>
< ASP:BoundField的数据字段=起始日期的HeaderText =起始日期SORTEX pression =起始日期/>
< /专栏>
< / ASP:GridView的>
下面是后端C#code导出到Excel。
保护无效download_Click(对象发件人,EventArgs的发送)
{
prepareGridViewForExport(GridView1);
Response.ClearContent();
Response.AddHeader(内容处置,附件;文件名= GridViewToExcel.xls);
Response.ContentType =应用程序/ EXCEL;
StringWriter的sWriter =新的StringWriter();
HtmlTextWriter的hTextWriter =新的HtmlTextWriter(sWriter);
GridView1.RenderControl(hTextWriter);
的Response.Write(sWriter.ToString());
到Response.End();
}
公共覆盖无效VerifyRenderingInServerForm(控制控制)
{
}
私人无效prepareGridViewForExport(控制GV)
{
文字L =新的文字();
字符串名称=的String.Empty;
的for(int i = 0; I< gv.Controls.Count;我++)
{
如果(gv.Controls [I] .GetType()== typeof运算(复选框))
{
gv.Controls.Remove(gv.Controls [I]);
gv.Controls.AddAt(I,L);
}
如果(gv.Controls [I] .HasControls())
{
prepareGridViewForExport(gv.Controls [I]);
}
}
}
解决方案
试试这个导出功能,隐藏不需要的行的列柱即0 ...
保护无效btnExportExcel_Click(对象发件人,EventArgs的发送)
{
Response.Clear();
将Response.Buffer =真;
Response.AddHeader(内容处置,附件;文件名= GridViewExport.xls);
Response.Charset的=;
Response.ContentType =应用程序/ vnd.ms-EXCEL;
StringWriter的SW =新的StringWriter();
HtmlTextWriter的HW =新的HtmlTextWriter(SW);
GridView1.DataBind();
GridView1.HeaderRow.Cells [0] =。可见假的; 的for(int i = 0; I< GridView1.Rows.Count;我++)
{
GridViewRow行= GridView1.Rows [I]
row.Cells [0] =。可见假的;
。row.Cells [0] .FindControl(chkCol0)可见=虚假的;
}
GridView1.RenderControl(HW);
的Response.Write(样式);
Response.Output.Write(sw.ToString());
到Response.End();
}
或
在您的导出,删除列。事情是这样的:
GridView1.Columns [0] =。可见假的;
GridView1.DataBind();
GridView1.RenderControl(htmlWrite);
的Response.Write(< META HTTP-当量= \\内容类型\\的内容= \\text / html的;字符集= UTF-8 \\/>中);
I have a gridview that needs to be exported to Excel. I have managed to remove the Checkboxes from Rows but don't know how to remove from the Header and also delete the Checkbox Column entirely. Thanks for help.
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4" DataKeyNames="Id">
<Columns>
<asp:TemplateField HeaderText="Select" >
<HeaderTemplate>
<input id="chkAll" onclick="checkAll(this);" runat="server" type="checkbox" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Event" HeaderText="Event" SortExpression="Event" />
<asp:BoundField DataField="Event_Description" HeaderText="Event_Description" SortExpression="Event_Description" />
<asp:BoundField DataField="Start_Date" HeaderText="Start_Date" SortExpression="Start_Date" />
</Columns>
</asp:GridView>
Here's the backend C# code to export to excel.
protected void download_Click(object sender, EventArgs e)
{
PrepareGridViewForExport(GridView1);
Response.ClearContent();
Response.AddHeader("content-disposition", "attachment; filename=GridViewToExcel.xls");
Response.ContentType = "application/excel";
StringWriter sWriter = new StringWriter();
HtmlTextWriter hTextWriter = new HtmlTextWriter(sWriter);
GridView1.RenderControl(hTextWriter);
Response.Write(sWriter.ToString());
Response.End();
}
public override void VerifyRenderingInServerForm(Control control)
{
}
private void PrepareGridViewForExport(Control gv)
{
Literal l = new Literal();
string name = String.Empty;
for (int i = 0; i < gv.Controls.Count; i++)
{
if (gv.Controls[i].GetType() == typeof(CheckBox))
{
gv.Controls.Remove(gv.Controls[i]);
gv.Controls.AddAt(i, l);
}
if (gv.Controls[i].HasControls())
{
PrepareGridViewForExport(gv.Controls[i]);
}
}
}
解决方案
Try out this export function , which hides not needed column i.e column 0 of the row...
protected void btnExportExcel_Click(object sender, EventArgs e)
{
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.xls");
Response.Charset = "";
Response.ContentType = "application/vnd.ms-excel";
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
GridView1.DataBind();
GridView1.HeaderRow.Cells[0].Visible = false;
for (int i = 0; i < GridView1.Rows.Count;i++ )
{
GridViewRow row = GridView1.Rows[i];
row.Cells[0].Visible = false;
row.Cells[0].FindControl("chkCol0").Visible = false;
}
GridView1.RenderControl(hw);
Response.Write(style);
Response.Output.Write(sw.ToString());
Response.End();
}
or
On your export, drop the column. Something something like:
GridView1.Columns[0].visible = false;
GridView1.DataBind();
GridView1.RenderControl(htmlWrite);
Response.Write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />");
这篇关于删除复选框在导出的GridView到Excel的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文