过滤后的Excel输出

时间:2012-04-16 18:42:20

标签: asp.net-mvc-3 excel filtering

我尝试在基于版本的过滤器完成后输出到excel。我已经能够输出到excel但我不明白如何在基于VERSION过滤结果后输出到excel表。例如,当我过滤版本11.3并按go时,索引页面仅显示版本与我选择的版本匹配的行。我想做一些与输出相似的东西。因此,当我按ALL过滤时,它将输出每一行,但是当我过滤11.3作为版本的记录时,我只想输出具有正确版本的行。我希望这是有道理的,我已经附加了我的控制器和我的索引页面。如果需要任何其他代码,请告诉我我会经常回来查看。谢谢你的帮助!

PaController

using System;
using System.Collections.Generic;
using System.Linq;
using System.Data.Linq;
using System.Data.Linq.Mapping;
using System.Web.UI.WebControls;
using System.Web;
using System.Web.Mvc;
using System.Data;
using PagedList;
using PagedList.Mvc;
using DBFirstMVC.Controllers;
using System.IO;
using DBFirstMVC;
using System.Web.UI;
using DBFirstMVC.Models;



namespace DBFirstMVC.Controllers

{
    public class PaController : Controller
    {
        PaEntities db = new PaEntities();

        // Index Method 
        public ViewResult Index(string sortOrder, string currentFilter, string searchString, int? page, string Versions)
        {

            var IAMP = from p in db.iamp_mapping select p;
            if (Versions != null && Versions != String.Empty) // Dropdown Sort Function     
            {
                IAMP = IAMP.Where(v => v.VERSION.Contains(Versions));
            }
            var VIAMP = from x in db.version_number select x;


            ViewBag.CurrentSort = sortOrder; //ViewBag property provides the view with the current sort order
            ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "PA desc" : ""; // Calls the sortOrder switch/case PA desc or default 
            ViewBag.MPSortParm = sortOrder == "MP" ? "MP desc" : "MP asc"; // Calls the sortOrder switch/case MP desc or MP asc
            ViewBag.IASortParm = sortOrder == "IA" ? "IA desc" : "IA asc"; // Calls the sortOrder switch/case IA desc or IA asc
            ViewBag.VersionSortParm = sortOrder == "VERSION" ? "Version desc" : "Version asc"; // Calls the sortOrder switch/case Version desc or Version asc
            ViewBag.IAMP_PKSortParm = sortOrder == "IAMP_PK" ? "IAMP_PK desc" : "IAMP_PK asc"; // Calls the sortOrder switch/case IAMP_PK desc or IAMP_PK asc

            if (Request.HttpMethod == "GET")
            {
                searchString = currentFilter; //sets the currentFilter equal to Searchstring
            }
            else
            {
                page = 1;                   // defaults to page 1
            }
            ViewBag.CurrentFilter = searchString; // Provides the view with the current filter string




            if (!String.IsNullOrEmpty(searchString))
            {
                IAMP = IAMP.Where(p => p.PA.ToUpper().Contains(searchString.ToUpper())); //selects only records that contains the search string
            }

            switch (sortOrder) // switch case changes based on desired sort 
            {
                case "Pa desc":
                    IAMP = IAMP.OrderByDescending(p => p.PA);
                    break;
                case "MP desc":
                    IAMP = IAMP.OrderByDescending(p => p.MAJOR_PROGRAM);
                    break;
                case "MP asc":
                    IAMP = IAMP.OrderBy(p => p.MAJOR_PROGRAM);
                    break;
                case "IA desc":
                    IAMP = IAMP.OrderByDescending(p => p.INVESTMENT_AREA);
                    break;
                case "IA asc":
                    IAMP = IAMP.OrderBy(p => p.INVESTMENT_AREA);
                    break;
                case "Version asc":
                    VIAMP = VIAMP.OrderBy(x => x.VERSION);

                    break;
                case "Version desc":
                    VIAMP = VIAMP.OrderByDescending(x => x.VERSION);
                    break;
                case "IAMP_PK asc":
                    IAMP = IAMP.OrderBy(p => p.IAMP_PK);
                    break;
                case "IAMP_PK desc":
                    IAMP = IAMP.OrderByDescending(p => p.IAMP_PK);
                    break;
                default:
                    IAMP = IAMP.OrderBy(p => p.PA);
                    break;
            }
            int pageSize = 15; // number of records shown on page view
            int pageNumber = (page ?? 1); // start page number

            ViewData["Versions"] = new SelectList(VIAMP.Select(x => x.VERSION));

            return View(IAMP.ToPagedList(pageNumber, pageSize)); // uses pagedList method to return correct page values
        }


        // Instantiates create method
        // GET: /Pa/Create

        public ActionResult Create()
        {
            SetVersionViewBag();
            return View();
        }

        // Create method adds records to Database and saves changes 
        // POST: /Pa/Create

        [HttpPost]
        public ActionResult Create(iamp_mapping IAMP, version_number VIAMP)
        {
            try
            {
                using (var db = new PaEntities())
                {
                    db.iamp_mapping.Add(IAMP);

                    db.SaveChanges();
                }

                return RedirectToAction("Index");
            }
            catch
            {
                ViewBag.VERSION = new MultiSelectList(db.version_number, "VERSION", "VERSION", VIAMP.VERSION);
                return View(VIAMP);
            }
        }

        // Instantiates Edit Method
        // GET: /Pa/Edit/5

        public ActionResult Edit(string id)
        {

            var VIAMP = from x in db.version_number select x;
            iamp_mapping IAMP = db.iamp_mapping.Find(id);

            ViewData["Versions"] = new SelectList(VIAMP.Select(x => x.VERSION));
            return View(IAMP);

        }

        // Edit method modifies existing records and saves changes
        // POST: /Pa/Edit/5

        [HttpPost]
        public ActionResult Edit(string id, iamp_mapping IAMP)
        {



            var VIAMP = from x in db.version_number select x;
            {
                if (ModelState.IsValid)
                {

                    db.Entry(IAMP).State = EntityState.Modified;

                    db.SaveChanges();
                    return RedirectToAction("Index");

                }

                ViewBag.VERSION = new MultiSelectList(db.version_number, "VERSION", "VERSION");

                return View(IAMP);

            }
        }


        // Instantiates delete method
        // GET: /Pa/Delete/5

        public ActionResult Delete(string id)
        {

            using (var db = new PaEntities())
            {
                var VIAMP = from x in db.version_number select x;
                return View(db.iamp_mapping.Find(id));
            }
        }

        // Delete method renames primary key and then removes record from database
        // POST: /Pa/Delete/5

        [HttpPost]
        public ActionResult Delete(string id, iamp_mapping IAMP)
        {
            try
            {
                using (var db = new PaEntities())
                {
                    var vIAMP = db.iamp_mapping.Find(id);
                    db.Entry(vIAMP).State = EntityState.Deleted;

                    db.SaveChanges();

                    return RedirectToAction("Index");
                }

            }
            catch (Exception e)
            {
                throw (e);
                //return View();
            }
        }
        public ActionResult ExcelOutput(iamp_mapping IAMP)
        {
            var iamp_mapping = db.iamp_mapping as IEnumerable<iamp_mapping>;


            var grid = new GridView
            {
                DataSource = from p in iamp_mapping
                             select new
                             {
                                 PA = p.PA,
                                 MP = p.MAJOR_PROGRAM,
                                 IA = p.INVESTMENT_AREA,
                                 Version = p.VERSION,
                                 IAMP_PK = p.IAMP_PK
                             }
            };
            grid.DataBind();

            Response.ClearContent();
            Response.AddHeader("content-dispostion", "inline; filename= Excel.xls");

            Response.ContentType = "application/vnd.ms-excel";
            StringWriter sw = new StringWriter();
            HtmlTextWriter htw = new HtmlTextWriter(sw);
            grid.RenderControl(htw);
            Response.Write(sw.ToString());
            Response.End();
            return View("Index");
        }


        private void SetVersionViewBag(string VERSION = null)
        {

            if (VERSION == null)
                ViewBag.VERSION = new MultiSelectList(db.version_number, "VERSION", "VERSION");
            else
                ViewBag.VERSION = new MultiSelectList(db.iamp_mapping, "VERSION", "VERSION", VERSION);

        }
    }
}

索引

using System;
using System.Collections.Generic;
using System.Linq;
using System.Data.Linq;
using System.Data.Linq.Mapping;
using System.Web.UI.WebControls;
using System.Web;
using System.Web.Mvc;
using System.Data;
using PagedList;
using PagedList.Mvc;
using DBFirstMVC.Controllers;
using System.IO;
using DBFirstMVC;
using System.Web.UI;
using DBFirstMVC.Models;



namespace DBFirstMVC.Controllers

{
    public class PaController : Controller
    {
        PaEntities db = new PaEntities();

        // Index Method 
        public ViewResult Index(string sortOrder, string currentFilter, string searchString, int? page, string Versions)
        {

            var IAMP = from p in db.iamp_mapping select p;
            if (Versions != null && Versions != String.Empty) // Dropdown Sort Funtion     
            {
                IAMP = IAMP.Where(v => v.VERSION.Contains(Versions));
            }
            var VIAMP = from x in db.version_number select x;


            ViewBag.CurrentSort = sortOrder; //ViewBag property provides the view with the current sort order
            ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "PA desc" : ""; // Calls the sortOrder switch/case PA desc or default 
            ViewBag.MPSortParm = sortOrder == "MP" ? "MP desc" : "MP asc"; // Calls the sortOrder switch/case MP desc or MP asc
            ViewBag.IASortParm = sortOrder == "IA" ? "IA desc" : "IA asc"; // Calls the sortOrder switch/case IA desc or IA asc
            ViewBag.VersionSortParm = sortOrder == "VERSION" ? "Version desc" : "Version asc"; // Calls the sortOrder switch/case Version desc or Version asc
            ViewBag.IAMP_PKSortParm = sortOrder == "IAMP_PK" ? "IAMP_PK desc" : "IAMP_PK asc"; // Calls the sortOrder switch/case IAMP_PK desc or IAMP_PK asc

            if (Request.HttpMethod == "GET")
            {
                searchString = currentFilter; //sets the currentFilter equal to Searchstring
            }
            else
            {
                page = 1;                   // defaults to page 1
            }
            ViewBag.CurrentFilter = searchString; // Provides the view with the current filter string




            if (!String.IsNullOrEmpty(searchString))
            {
                IAMP = IAMP.Where(p => p.PA.ToUpper().Contains(searchString.ToUpper())); //selects only records that contains the search string
            }

            switch (sortOrder) // switch case changes based on desired sort 
            {
                case "Pa desc":
                    IAMP = IAMP.OrderByDescending(p => p.PA);
                    break;
                case "MP desc":
                    IAMP = IAMP.OrderByDescending(p => p.MAJOR_PROGRAM);
                    break;
                case "MP asc":
                    IAMP = IAMP.OrderBy(p => p.MAJOR_PROGRAM);
                    break;
                case "IA desc":
                    IAMP = IAMP.OrderByDescending(p => p.INVESTMENT_AREA);
                    break;
                case "IA asc":
                    IAMP = IAMP.OrderBy(p => p.INVESTMENT_AREA);
                    break;
                case "Version asc":
                    VIAMP = VIAMP.OrderBy(x => x.VERSION);

                    break;
                case "Version desc":
                    VIAMP = VIAMP.OrderByDescending(x => x.VERSION);
                    break;
                case "IAMP_PK asc":
                    IAMP = IAMP.OrderBy(p => p.IAMP_PK);
                    break;
                case "IAMP_PK desc":
                    IAMP = IAMP.OrderByDescending(p => p.IAMP_PK);
                    break;
                default:
                    IAMP = IAMP.OrderBy(p => p.PA);
                    break;
            }
            int pageSize = 15; // number of records shown on page view
            int pageNumber = (page ?? 1); // start page number

            ViewData["Versions"] = new SelectList(VIAMP.Select(x => x.VERSION));

            return View(IAMP.ToPagedList(pageNumber, pageSize)); // uses pagedList method to return correct page values
        }


        // Instantiates create method
        // GET: /Pa/Create

        public ActionResult Create()
        {
            SetVersionViewBag();
            return View();
        }

        // Create method adds records to Database and saves changes 
        // POST: /Pa/Create

        [HttpPost]
        public ActionResult Create(iamp_mapping IAMP, version_number VIAMP)
        {
            try
            {
                using (var db = new PaEntities())
                {
                    db.iamp_mapping.Add(IAMP);

                    db.SaveChanges();
                }

                return RedirectToAction("Index");
            }
            catch
            {
                ViewBag.VERSION = new MultiSelectList(db.version_number, "VERSION", "VERSION", VIAMP.VERSION);
                return View(VIAMP);
            }
        }

        // Instantiates Edit Method
        // GET: /Pa/Edit/5

        public ActionResult Edit(string id)
        {

            var VIAMP = from x in db.version_number select x;
            iamp_mapping IAMP = db.iamp_mapping.Find(id);

            ViewData["Versions"] = new SelectList(VIAMP.Select(x => x.VERSION));
            return View(IAMP);

        }

        // Edit method modifies existing records and saves changes
        // POST: /Pa/Edit/5

        [HttpPost]
        public ActionResult Edit(string id, iamp_mapping IAMP)
        {



            var VIAMP = from x in db.version_number select x;
            {
                if (ModelState.IsValid)
                {

                    db.Entry(IAMP).State = EntityState.Modified;

                    db.SaveChanges();
                    return RedirectToAction("Index");

                }

                ViewBag.VERSION = new MultiSelectList(db.version_number, "VERSION", "VERSION");

                return View(IAMP);

            }
        }


        // Instantiates delete method
        // GET: /Pa/Delete/5

        public ActionResult Delete(string id)
        {

            using (var db = new PaEntities())
            {
                var VIAMP = from x in db.version_number select x;
                return View(db.iamp_mapping.Find(id));
            }
        }

        // Delete method renames primary key and then removes record from database
        // POST: /Pa/Delete/5

        [HttpPost]
        public ActionResult Delete(string id, iamp_mapping IAMP)
        {
            try
            {
                using (var db = new PaEntities())
                {
                    var vIAMP = db.iamp_mapping.Find(id);
                    db.Entry(vIAMP).State = EntityState.Deleted;

                    db.SaveChanges();

                    return RedirectToAction("Index");
                }

            }
            catch (Exception e)
            {
                throw (e);
                //return View();
            }
        }
        public ActionResult ExcelOutput(iamp_mapping IAMP)
        {
            var iamp_mapping = db.iamp_mapping as IEnumerable<iamp_mapping>;


            var grid = new GridView
            {
                DataSource = from p in iamp_mapping
                             select new
                             {
                                 PA = p.PA,
                                 MP = p.MAJOR_PROGRAM,
                                 IA = p.INVESTMENT_AREA,
                                 Version = p.VERSION,
                                 IAMP_PK = p.IAMP_PK
                             }
            };
            grid.DataBind();

            Response.ClearContent();
            Response.AddHeader("content-dispostion", "inline; filename= Excel.xls");

            Response.ContentType = "application/vnd.ms-excel";
            StringWriter sw = new StringWriter();
            HtmlTextWriter htw = new HtmlTextWriter(sw);
            grid.RenderControl(htw);
            Response.Write(sw.ToString());
            Response.End();
            return View("Index");
        }


        private void SetVersionViewBag(string VERSION = null)
        {

            if (VERSION == null)
                ViewBag.VERSION = new MultiSelectList(db.version_number, "VERSION", "VERSION");
            else
                ViewBag.VERSION = new MultiSelectList(db.iamp_mapping, "VERSION", "VERSION", VERSION);

        }
    }
}

0 个答案:

没有答案