2016-05-09 7 views
0

Ich recherchiere und versuche, eine Möglichkeit zu finden, bestimmte Daten in eine Excel-Tabelle zu exportieren.Exportieren nach Excel mit Prädikat-Builder

Die Websites, die ich gefunden habe, ähneln this, wo sie jeden Datensatz in der Datenbank zurückgeben.

In meiner Webanwendung habe ich eine View, die alle Datensätze in der Datenbank zurückgibt, aber ich verwende auch Predicate Builder, so dass der Benutzer Datensätze anhand ihrer spezifischen Parameter sortieren kann. Der Benutzer, der diese Anwendung verwendet, wird 0 Nutzen/Interesse haben, um jeden exportierenden Datensatz zu exportieren.

Also, meine Frage ist, wie kombiniere ich die Parameter (Prädikat) mit einer Methode, die nach Excel exportiert?

Ich habe keinen Code zu zeigen, weil ich keine Beispiele in meiner Forschung gefunden habe, um mir eine Grundlage für die Kombination von Parametern mit Exportieren nach Excel zu liefern.

Antwort

1

Ich verwende PredicateBuilder nicht in meinem Code, aber ich habe ein Beispiel dafür verwendet. Vielleicht musst du etwas anpassen.

public ActionResult Export(string PatientName, string BirthDate, string Gender, string PatientType) 
    { 
     ViewBag.PatientName = PatientName ?? ""; 
     ViewBag.BirthDate = BirthDate ?? ""; 
     ViewBag.Gender = Gender ?? ""; 
     ViewBag.PatientType = PatientType ?? ""; 

     var predicate = PredicateBuilder.True<Patient>(); 

     if (!string.IsNullOrEmpty(PatientName)) 
     { 
      predicate = predicate.And(i => i.FirstName.ToLower().StartsWith(PatientName) || i.LastName.ToLower().StartsWith(PatientName)); 
     } 

     if (!string.IsNullOrEmpty(Gender)) 
     { 
      int gender; 
      Int32.TryParse(Gender, out gender); 
      predicate = predicate.And(i => i.Gender == gender); 
     } 
     if (!string.IsNullOrEmpty(PatientType)) 
     { 
      int type; 
      Int32.TryParse(PatientType, out type); 
      predicate = predicate.And(i => i.PatientType == type); 
     } 

     if (!string.IsNullOrEmpty(BirthDate)) 
     { 
      DateTime dob; 
      DateTime.TryParse(BirthDate, out dob); 
      predicate = predicate.And(i => EntityFunctions.TruncateTime(i.BirthDate) == EntityFunctions.TruncateTime(dob)); 
     } 

     var patients = db.Patients.Where(predicate).Select(i => i).Include(p => p.DropDownOption).Include(p => p.DropDownOption1); 

     GridView gv = new GridView(); 
     gv.DataSource = patients.ToList(); 
     gv.DataBind(); 
     Response.ClearContent(); 
     Response.Buffer = true; 
     Response.AddHeader("content-disposition", "attachment; filename=IbiliPasswords.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"); 
    } 

Index.cshtml:

@Html.ActionLink("Export Info", "Export", new { PatientName = ViewBag.PatientName, BirthDate= ViewBag.BirthDate, Gender= ViewBag.Gender, PatientType= ViewBag.PatientType}) 

Hoffe, dass es Ihnen hilft.

+0

wie es sich herausstellt .. in meinem * Prädikat Builder * Ich habe die Parameter gespeichert, die der Benutzer verwendet, um die Datenbank in eine 'Session' zu sortieren, also alles, was ich mit dem zu tun hatte, was du mir gegeben hast, war' gv .DataSource = Session ["MySessionName"]; '.. Ich brauchte die Parameter im Action-Ergebnis oder den ViewBags nicht –

Verwandte Themen