如何在asp.net中获取数据表以仅显示某些数据

时间:2017-11-14 16:43:39

标签: jquery asp.net asp.net-mvc datatables

我无法想象如何让数据只显示John的条目。我正在使用dataTables,所以不知道如何让它工作。当我启动应用程序时,它仍会显示所有用户。这是我到目前为止得到的任何帮助将不胜感激。我试图在程序中获取where子句我是否在模型中创建它而不是在控制器中。

控制器

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Asp.NetMVCCrud.Models;

namespace Asp.NetMVCCrud.Controllers
{
    public class EmployeeController : Controller
    {
        // GET: Employee
        public ActionResult Index()
        {
            return View();
        }
        public ActionResult GetData()
        {
            using(DBModel db = new DBModel())
            {
               db.Employees.Where(Employee => Employee.Name == "John");
                List<Employee> empList = db.Employees.ToList<Employee>();
                return Json(new { data = empList }, JsonRequestBehavior.AllowGet);
            }

        }
    }
}

生成员工模型

namespace Asp.NetMVCCrud.Models
{
    using System;
    using System.Collections.Generic;

    public partial class Employee
    {
        public int EmployeeID { get; set; }
        public string Name { get; set; }
        public string Postion { get; set; }
        public string Office { get; set; }
        public Nullable<int> Age { get; set; }
        public Nullable<int> Salary { get; set; }
    }
}

查看索引

@{
    ViewBag.Title = "Employee List";
}

<h2>Employee Crud Operations</h2>
<table id="employeetable" class="table table-striped table-bordered">
  <thead>
      <tr>
          <th>Name</th>
          <th>Position</th>
          <th>Office</th>
          <th>Age</th>
          <th>Salary</th>
      </tr>
  </thead>
</table>
<link href="https://cdn.datatables.net/1.10.16/css/dataTables.bootstrap4.min.css" rel="stylesheet" />

@section scripts{
    <script src="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js"></script>
    <script src="https://cdn.datatables.net/1.10.16/js/dataTables.bootstrap4.min.js"></script>
    <script>
        $(document).ready(function () {
            $("#employeetable").DataTable({
                "ajax": {
                    "url": "/Employee/GetData",
                    "type": "GET",
                    "datatype":"json"

                },
                "columns": [

                    { "data": "Name" },
                      { "data": "Postion" },
                        { "data": "Office" },
                          { "data": "Age" },
                            { "data": "Salary" },

                ]

            });

        });
    </script>
    }

2 个答案:

答案 0 :(得分:1)

此行db.Employees.Where(Employee => Employee.Name == "John")目前尚未在功能上执行任何操作。它正在向名为John的员工查询数据库,然后不对该数据执行任何操作。我想你想要

List<Employee> empList = db.Employees.Where(Employee => Employee.Name == "John").ToList();

return Json(new { data = empList }, JsonRequestBehavior.AllowGet);

您需要将过滤后的数据分配给变量,以便对其进行引用,然后将该数据作为json的一部分返回

答案 1 :(得分:0)

因为您的代码正在返回empList,这是所有员工。

您有一个LINQ查询(此行db.Employees.Where(Employee => Employee.Name == "John");)来获取已过滤的子集,但您没有执行该查询或使用该结果返回结果。

仅返回已过滤的结果。这应该工作

var filteredList = db.Employees.Where(e=> e.Name == "John").ToList();
return Json(new { data = filteredList }, JsonRequestBehavior.AllowGet);