我正在使用 MVC.Grid 填充一些数据。网格工作正常,我还能够将完整数据导出到 Excel。现在我想将过滤后的数据从同一个网格导出到 excel 中。请告诉我任何解决方案来做到这一点。我的控制器和视图代码如下:
看法
@model IEnumerable<CCA_LMC.Models.Event_Detail_Model>
@using GridMvc.Html
@using System.Web.Optimization
@{
ViewBag.Title = "GridTest";
Layout = "~/Views/Shared/_Layout.cshtml";
<link href="@Url.Content("~/Content/Gridmvc.css")" rel="stylesheet" type="text/css" />
<script src="~/Scripts/jquery-3.4.1.min.js"></script>
<script src="~/Scripts/gridmvc.min.js"></script>
}
<h2 style="text-align:center">Registered Entries</h2>
<hr />
@using (Html.BeginForm("Export", "RegistrationDetail", FormMethod.Post))
{
<div style="text-align:right"><input type="submit" id="btnSubmit" value="Export" class="alert-success" /></div>
}
<hr />
@Html.Grid(Model).Columns(columns =>
{
columns.Add(c => c.stu_name).Titled("Student Name").SetWidth(500).Filterable(true);
columns.Add(c => c.pno).Titled("Personal Number").SetWidth(500).Filterable(true);
columns.Add(c => c.class_name).Titled("Class").SetWidth(500).Filterable(true);
columns.Add(c => c.class_sec).Titled("Section").SetWidth(500).Filterable(true);
columns.Add(c => c.house).Titled("House").SetWidth(500).Filterable(true);
columns.Add(c => c.eventnm).Titled("Event Name").SetWidth(500).Filterable(true);
columns.Add(c => c.email).Titled("Email").SetWidth(500).Filterable(true);
columns.Add(c => c.phoneno).Titled("Phone Number").SetWidth(500).Filterable(true);
columns.Add(c => c.StartDate).Titled("Starting Date").SetWidth(500).Filterable(true);
columns.Add(c => c.EndDate).Titled("End Date").SetWidth(500).Filterable(true);
}).WithPaging(10).Sortable(true)
@Scripts.Render("~/Scripts/gridmvc.min.js")
控制器
[HttpPost]
public FileResult Export()
{
EventDbEntities1 db = new EventDbEntities1();
List<EventRegistration> er = db.EventRegistrations.ToList();
List<Event_Detail> ed = db.Event_Detail.ToList();
List<object> student = (from c in er
join d in ed on c.eventnm equals d.EventID
select new[] { c.stu_name,c.pno.ToString(),c.class_name,c.class_sec,c.house, d.EventType, c.email, c.phoneno }).ToList<object>();
//Insert the Column Names.
student.Insert(0, new string[8] { "Student Name", "Personal Number", "Class", "Section", "House", "Event Name", "Email", "Phone Number" });
StringBuilder sb = new StringBuilder();
for (int i = 0; i < student.Count; i++)
{
string[] students = (string[])student[i];
for (int j = 0; j < students.Length; j++)
{
//Append data with separator.
sb.Append(students[j] + ',');
}
//Append new line character.
sb.Append("\r\n");
}
return File(Encoding.UTF8.GetBytes(sb.ToString()), "text/csv", "Grid.csv");
}