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

ASP.NET GridView到Excel的布尔值

从GridView导出将从实际呈现的内容中获取所有内容。除非在GridView中定义输出YesNoTemplateField,否则这将不起作用。一个等价的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);