2016-08-16 13 views
1

私はASP.NET Entity Frameworkを使用していますが、Excelのエクスポートメソッドを使用すると機能しますが、問題は1つあります。私のデータにはブール値があり、スプレッドシートではブール値は返されません。私はイエスかノーを印刷することを期待しています。どうすればこれを達成できますか?ここでASP.NET GridView with Booleans

は私のコードです:

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"); 

} 

それとも実際に私が唯一の偽のデータを取得していますように、閉じられたため、すべての行は、GridViewのからのエクスポートませ

+1

「EPPlus」を使用する方がよいでしょう。http://epplus.codeplex.com/ –

+0

ブールフィールドがASPXページのGridviewにどのようにマップされているかを表示できますか? – techspider

+0

私はASPXページを持っていません、これはMVC 5です – user979331

答えて

0

を返すことができなかったレンダリングされた実際のすべてのコンテンツを取りますコンテンツ。 TemplateFieldGridViewに定義し、YesまたはNoを出力しない限り、これは機能しません。同等のGridViewテンプレートフィールドは次のようになります。あなたはMVCを使用して提供される

<asp:TemplateField HeaderText="Status" ItemStyle-Width="30"> 
    <ItemTemplate><%# (Boolean.Parse(Eval("IsActive").ToString())) ? "Yes" : "No" %></ItemTemplate> 
</asp:TemplateField> 

、それはこのタスクを達成するための好ましい方法ではありません。との間には常に正しい結果が得られますの間には常にの違いがあります。

このようにしたい場合は、フィールドをプログラムで追加する必要があります。詳細についてはTemplateField動的

var templateField = new TemplateField(); 
templateField .ItemTemplate = new LinkColumn(); 
gv.Columns.Add(templateField); 

を作成BoundField動的

BoundField boundField = new BoundField(); 
boundField.HeaderText = "HeaderText"; 
boundField.DataField = "FiledToBeMapped" 
gv.Columns.Add(boundField); 

を作成

、このlink、このlinkこのlinkを使用しています。

+0

これは私には意味がありません:( – user979331