C# 如何使用JQuery;“数据表”;插件服务器端处理.NET MVC3视图中的大数据

C# 如何使用JQuery;“数据表”;插件服务器端处理.NET MVC3视图中的大数据,c#,jquery,asp.net-mvc-3,razor,jquery-datatables,C#,Jquery,Asp.net Mvc 3,Razor,Jquery Datatables,我有一个显示员工列表的数据表。当我将员工数量设置为0-2000范围时,它可以正常工作,但之后加载该页面时会出现严重的延迟时间。这并不奇怪,因为它在页面加载中加载了大量数据。我到处找,找不到一个好的例子来说明如何进行服务器端处理。我在git hub上发现的项目在我的计算机上确实无法运行(我遇到了很多“缺少引用”的错误)。这是我现在正在使用的代码 employees.cshtml @model EmployeeList @{ Layout = null; ViewBag.Title

我有一个显示员工列表的数据表。当我将员工数量设置为0-2000范围时,它可以正常工作,但之后加载该页面时会出现严重的延迟时间。这并不奇怪,因为它在页面加载中加载了大量数据。我到处找,找不到一个好的例子来说明如何进行服务器端处理。我在git hub上发现的项目在我的计算机上确实无法运行(我遇到了很多“缺少引用”的错误)。这是我现在正在使用的代码

employees.cshtml

@model EmployeeList
@{
    Layout = null;
    ViewBag.Title = "employees";
}
<html>
<head>

<head/>
<body>
      <table id="employees_gridView">
            <thead>
                <tr>
                    <th
                        Name
                    </th>
                    <th>
                        Username
                    </th>
                    <th>
                        Job Category
                    </th>
                    <th>
                        Hire Date
                    </th>
                </tr>
            </thead>
            <tbody>
            @if (Model.RowList != null)
            {
                foreach (var item in Model.RowList)
                {


                <tr>
                    <td >
                        @Html.DisplayFor(i => item.DisplayName)
                    </td>
                    <td >
                        @Html.DisplayFor(i => item.UserName)
                    </td>
                    <td>
                        @Html.DisplayFor(i => item.JobCategoryName)
                    </td>

                    <td>
                        @Html.DisplayFor(i => item.hireDate)                          
                    </td>

                </tr>
                }
            }
            </tbody>
            <tfoot>
            </tfoot>
        </table>
    </div>
</div>
这是处理页面加载请求的控制器方法

public ActionResult Index()
    {
        EmployeeList employeeList = getEmployeeList();
        return View("Index", employeeList );
    }
有人能告诉我如何将这个客户端数据表更改为服务器端处理数据表。

这里有一个通过ajax进行服务器端处理的示例。
我处理过这个问题,但我的解决方案非常复杂。如果你想做到这一点,请注意你必须从服务器回复的json结构。

我以前使用过JQuery的datatables插件代码,即使你很快获得数据(即localhost),它仍然很慢——你在JavaScript/DOM操作上花费了很多时间。为了加快速度,必须虚拟化JQuery数据表。因此,您实际上必须修改客户端和服务器代码

步骤1)您需要一个可重复的SQL过程来返回适当的行子集。假设您总共有2000行,那么您需要一个类似于

GetEmployeDataRows(@startingrow)--或页码,或任何对您方便的内容

确保您有一个可以适当“子集”的稳定查询。这是第一步的关键,你也希望快速完成。行或页可能不是一个好的选择。例如,如果以主键顺序返回行,则将子集参数传递为@empnum和getEmployeeData中的include where EmployeeNumber>@empnum可能更明智

步骤2)公开一个以startingrow(等)为参数的Web服务(基于JSon的,通常最适合浏览器使用)

步骤3)--基于json服务虚拟化数据库

所以,这不是一个微不足道的任务,但它是真正解决这个问题的正确方法。每一步都有很多例子


--接下来我应该说得更清楚一些,如果你有很多数据,DataTables会很慢,如果你有1000行20列,我绝对不会建议使用没有虚拟化的数据表,这对我来说太慢了。如果您使用支持旧IE,它当然比正常速度还要慢。

谢谢您的建议。我设法只做了第二步和第三步,没有对我的数据库做任何更改。我使用linq语句代替存储过程。我非常感谢你的帮助。
public ActionResult Index()
    {
        EmployeeList employeeList = getEmployeeList();
        return View("Index", employeeList );
    }