如何在jtable jquery插件中获取当前的排序条件

How to get current sort criteria in jtable jquery plugin

本文关键字:排序 条件 获取 jtable jquery 插件      更新时间:2023-09-26

我正在使用Jtable Jquery插件在我的 asp.net mvc Web应用程序中进行CRUD操作。这工作正常,但在某些功能中,我希望网格的当前排序标准。所以我阅读了它的文档,但没有找到任何方法或事件来获取 jquery 代码中网格的当前排序标准。当页面加载或排序列链接被单击时,排序条件由 ajax 调用发送到控制器进行处理并获取要绑定到网格的数据。我可以在服务器端获取它,但我希望它在 jquery 的客户端使用它,但不知道如何获取它。对此的任何解决方案都非常有帮助。

谢谢。。。。

Javascript

sorting: true, //Enable sorting
defaultSorting: 'Name ASC', //Sort by Name by default

控制器

[HttpPost]
public JsonResult PersonList(int jtStartIndex = 0, int jtPageSize = 0, string jtSorting = null)
{
    try
    {
        int personCount = _personRepository.GetPersonCount();
        List<person> persons = _personRepository.GetPersons(jtStartIndex, jtPageSize, jtSorting);
        return Json(new { Result = "OK", Records = persons, TotalRecordCount = personCount });
    }
    catch (Exception ex)
    {
        return Json(new { Result = "ERROR", Message = ex.Message });
    }
} 

具有排序条件的 GetPerson 方法

public IEnumerable GetDeployments(string show, string name, int startIndex, int count, string sorting)
        {
//Get List of Persons from Database
    if (!string.IsNullOrEmpty(name))
               {
                   deploymentsList = deploymentsList.Where(p => p.KomponentenName.ToString().StartsWith(name));
               }
               if (string.IsNullOrEmpty(sorting) || sorting.Equals("KomponentenName ASC"))
               {
                   deploymentsList = deploymentsList.OrderBy(p => p.KomponentenName);
               }
               else if (sorting.Equals("KomponentenName DESC"))
               {
                   deploymentsList = deploymentsList.OrderByDescending(p => p.KomponentenName);
               }
               else if (sorting.Equals("datum ASC"))
               {
                   deploymentsList = deploymentsList.OrderBy(p => p.datum);
               }
               else if (sorting.Equals("datum DESC"))
               {
                   deploymentsList = deploymentsList.OrderByDescending(p => p.datum);
               }
               else if (sorting.Equals("RequesterName ASC"))
               {
                   deploymentsList = deploymentsList.OrderBy(p => p.RequesterName);
               }
               else if (sorting.Equals("RequesterName DESC"))
               {
                   deploymentsList = deploymentsList.OrderByDescending(p => p.RequesterName);
               }
               else if (sorting.Equals("dateDeployed ASC"))
               {
                   deploymentsList = deploymentsList.OrderBy(p => p.dateDeployed);
               }
               else if (sorting.Equals("dateDeployed DESC"))
               {
                   deploymentsList = deploymentsList.OrderByDescending(p => p.dateDeployed);
               }
               else
               {
                   deploymentsList = deploymentsList.OrderBy(p => p.KomponentenName); //Default!
               }
                 return count > 0
                           ? deploymentsList.Skip(startIndex).Take(count).ToList() //Paging
                           : deploymentsList.ToList(); //No paging
            }

由于您希望在客户端 javascript 代码中获取排序条件值,因此可以通过标准 jQuery 扩展过程扩展 jQuery jTable 来实现此目的。然后,一旦进入扩展代码,您就可以编写:

this._lastSorting

以上将为您提供:

ObjectfieldName: "size"
sortOrder: "ASC"

如果您需要有关如何扩展 jTable 的信息,您可以查看有关如何扩展 jQuery 插件的 SO 问题。

希望这有帮助。