получить направление сортировки из загрузочной сетки jquery в C # - PullRequest
0 голосов
/ 06 июня 2019

Я настроил загрузочную сетку jquery на веб-странице .net mvc, она показывает сетку с несколькими командами, такими как сортировка, автозаполнение поиска, прокрутка страниц. Библиотека находится здесь: http://www.jquery -bootgrid.com / документация

Сетка работает хорошо, и я решил отправить команды через ajax для функции позади. Затем библиотека отправляет в список список строк, используемых для обработки сетки:

current 1
rowCount    10
sort[filename]  asc

где filename это один из столбцов, по которым я хочу отсортировать. это может быть сортировка [id], сортировка [name] или что-то еще, что я установил в своем столбце. значения довольно понятны, ajax отправляет функции текущую страницу сетки, количество строк и направление сортировки. но когда я попадаю в функцию, я могу прочитать только первые 2 значения:

  public ActionResult AjaxRequestData(string current,string rowCount,string sort)

это определение читает первые 2 значения с веб-страницы, но не может прочитать сортировку, потому что фактическое имя переменной - это sort [filename], это не массив строк. Если я либо объявляю sort как строку или строку [] результат всегда равен нулю.

Как мне объявить переменные в действии? До сих пор я мог читать сортировку, используя formcollection ["sort [filename]"], formcollection ["sort [id]"] и т. Д., Но у меня много столбцов, и я действительно не хочу выписывать условие для каждого из им, есть ли другое решение для этого?

1 Ответ

1 голос
/ 06 июня 2019

Approch1 .Предположим, у вас есть таблица со столбцами "col1, col2, col3, ...".Вы можете использовать:

public ActionResult AjaxRequestData(string current,string rowCount,Sort sort){
    //sort.col1 == 'asc' (consider sorted by col1 in ascending order)
}

public class Sort
{
    public string col1 { get; set; }
    public string col2 { get; set; }
    public string col3 { get; set; }
    //... other columns
}

Подход 2. Вы можете удалить свои параметры и проанализировать данные вручную.(обратите внимание, я использовал пост здесь вместо get)

[HttpPost]
public object AjaxRequestData(){
    string jsonContent = Request.Content.ReadAsStringAsync().Result;
    Dictionary<string, string> keyvalues = new Dictionary<string, string>();
    string[] keyvalue_strings = jsonContent.Split('&');
    string sort_column = "";
    string sort_direction = "";
    for (var i = 0; i< keyvalue_strings.Length; i++)
    {
        var a = keyvalue_strings[i].Split('=');
        a[0] = a[0].Replace("%5B", "[").Replace("%5D", "]");
        keyvalues.Add(a[0], (a[1]));
        if (a[0].Contains("sort"))
        {
            sort_column = a[0].Replace("sort[", "").Replace("]", "");
            sort_direction = a[1];
        }
    }
    //now you have keyvalues, sort_column, sort_direction.
    //...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...