jQuery DataTables обрабатывает на стороне сервера с использованием ASP. NET WebForms

Проблема:

  • jQuery DataTables обрабатывает на стороне сервера с использованием ASP.NET WebForms.

Решение:

  • Дарин Димитров ответил на вопрос, используя пример, который страницы и сортирует, но не делает любой поиск. Вот моя ** базовая ** модификация его работы, чтобы заставить поиск работать на его примере:
public class Data : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        // Paging parameters:
        var iDisplayLength = int.Parse(context.Request["iDisplayLength"]);
        var iDisplayStart = int.Parse(context.Request["iDisplayStart"]);

        // Sorting parameters
        var iSortCol = int.Parse(context.Request["iSortCol_0"]);
        var iSortDir = context.Request["sSortDir_0"];

        // Search parameters
        var sSearch = context.Request["sSearch"];

        // Fetch the data from a repository (in my case in-memory)
        var persons = Person.GetPersons();

        // Define an order function based on the iSortCol parameter
        Func<Person, object> order = person => iSortCol == 0 ? (object) person.Id : person.Name;

        // Define the order direction based on the iSortDir parameter
        persons = "desc" == iSortDir ? persons.OrderByDescending(order) : persons.OrderBy(order);

        // prepare an anonymous object for JSON serialization
        var result = new
                         {
                             iTotalRecords = persons.Count(),
                             iTotalDisplayRecords = persons.Count(),
                             aaData = persons
                                 .Where(p => p.Name.Contains(sSearch))  // Search: Avoid Contains() in production
                                 .Where(p => p.Id.ToString().Contains(sSearch))
                                 .Select(p => new[] {p.Id.ToString(), p.Name})
                                 .Skip(iDisplayStart)   // Paging
                                 .Take(iDisplayLength)
                         };

        var serializer = new JavaScriptSerializer();
        var json = serializer.Serialize(result);
        context.Response.ContentType = "application/json";
        context.Response.Write(json);
    }

    public bool IsReusable { get { return false; } }
}

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }

    public static IEnumerable<Person> GetPersons()
    {
        for (int i = 0; i < 57; i++)
        {
            yield return new Person { Id = i, Name = "name " + i };
        }
    }
}
33
задан rebelliard 31 August 2010 в 02:13
поделиться

4 ответа

Я разработчик asp.Net ... Имейте в виду, что разработчики .net используются для создания веб-страниц с использованием элементов управления .net, а не элементов управления javascript.

Разница в том, что элемент управления asp.net - это элемент управления на стороне сервера, вы управляете им без написания JavaScript самостоятельно, а программируете на C # / VB.net. Элемент управления asp.net автоматически создает элемент управления javascript на стороне клиента при запуске веб-сайта.

Это подход более «современный» и действительно мощный.

Итак, если вы разработчик .net, я предлагаю вам использовать этот подход. Если вы разработчик javascript и создаете только клиентский интерфейс своего приложения, вероятно, вам понадобится веб-сервис, который предоставляет данные на стороне сервера в формате XML, который вы можете вызывать и читать через HTTP. Но для «поиска», обеспечения «разбивки на страницы» и «сортировки» через AJAX вам необходимо разработать серверную часть ...

1
ответ дан 27 November 2019 в 18:21
поделиться

Может быть, это может помочь? http://www.codeproject.com/KB/aspnet/ASPNET_DataTable_to_JSON.aspx

1
ответ дан 27 November 2019 в 18:21
поделиться

Примеры страниц, которые вы перечислили, фактически сортируются, разбиваются на страницы и фильтруются при инициализации. По сути, вы передаете эти данные через строку запроса.

Что-то вроде:

sAjaxSource": "../examples_support/server_processing.ashx?SortBy=FirstName&FilterBy=StackOverFlow"

Сказав это, если вы хотите переопределить какое-то поведение или расширить функциональность dataTable, у вас есть несколько вариантов: Расширение функциональности dataTable Настройка прокрутки

Вы можете следовать приведенные выше примеры и настроить их для фильтрации, сортировки и разбиения на страницы

2
ответ дан 27 November 2019 в 18:21
поделиться

http://naspinski.net/post/REAL-AJAX-with-AspNet-(not-AspNet-AJAX).aspx

Этот парень заставил ajax работать с asp.net и таблицы данных.

1
ответ дан 27 November 2019 в 18:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: