ASP.NET GridView到Excel的布尔值
本文关键字:布尔值 Excel NET GridView ASP | 更新日期: 2023-09-27 18:02:47
我使用的是ASP。. NET实体框架和我有一个导出excel方法,它的工作原理,但我有一个问题。我的数据中有布尔值,在我的excel电子表格中,布尔值不返回,它只是空的。我希望打印出是或否。我怎样才能做到这一点呢?
下面是我的代码:public ActionResult ExportData()
{
GridView gv = new GridView();
gv.DataSource = db.Data.ToList().Where(model => model.closed == false);
gv.DataBind();
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment; filename=IssueTracking.xls");
Response.ContentType = "application/ms-excel";
Response.Charset = "";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gv.RenderControl(htw);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
return RedirectToAction("Index");
}
或者实际上我只得到假的数据,所有的行关闭可以返回No
从GridView导出将从实际呈现的内容中获取所有内容。除非在GridView
中定义输出Yes
或No
的TemplateField
,否则这将不起作用。一个等价的GridView
模板字段看起来像这样:
<asp:TemplateField HeaderText="Status" ItemStyle-Width="30">
<ItemTemplate><%# (Boolean.Parse(Eval("IsActive").ToString())) ? "Yes" : "No" %></ItemTemplate>
</asp:TemplateField>
如果您正在使用MVC,它不是实现此任务的首选方法。把事情做好和用正确的方法把事情做好总是有区别的。
如果您仍然想这样做,则必须以编程方式添加字段。
动态创建BoundField
BoundField boundField = new BoundField();
boundField.HeaderText = "HeaderText";
boundField.DataField = "FiledToBeMapped"
gv.Columns.Add(boundField);
动态创建TemplateField
var templateField = new TemplateField();
templateField .ItemTemplate = new LinkColumn();
gv.Columns.Add(templateField);