2015-01-15 2 views
0

Я использую Jtable Jquery plugin для работы CRUD в моем веб-приложении asp.net mvc. Это работает правильно, но в некоторых функциях мне нужны текущие критерии сортировки для сетки. Поэтому я прочитал документацию для него, но не нашел никакого метода или события, по которым я получаю текущие критерии сортировки для сетки в моем jquery-коде. При щелчке по ссылке страницы или сортировке столбца критерии сортировки отправляются контроллеру с помощью ajax-вызова для обработки и получения данных для привязки к сетке. Я могу получить его на сервере, но я хочу, чтобы он использовал его в clientide в jquery, но не знаю, как его получить. Любое решение это действительно полезно ..Как получить текущие критерии сортировки в jtable jquery plugin

Спасибо ....

ответ

1

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 }); 
    } 
} 

GetPersons Метод сортировки КРИТЕРИИ

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 

      } 
0

Si Если вы хотите получить значение критерия сортировки в javascript-коде клиента, вы можете достичь этого, расширив jQuery jTable через стандартный процесс расширения jQuery. Затем, когда вы находитесь внутри вашего кода расширения, вы можете написать:

this._lastSorting 

выше даст вам:

ObjectfieldName: "size" 
sortOrder: "ASC" 

Вы можете взглянуть на this SO вопрос о том, как расширить плагин JQuery, если вам нужна информация о том, как расширить jTable.

Надеюсь, это поможет.

Смежные вопросы