0

我正在使用 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");
        }
4

0 回答 0