Datatable.net - параметры обработки на стороне сервера - PullRequest
0 голосов
/ 30 октября 2018

Я использую datatable.net, и HTML-код, который я написал до сих пор:

    $(document).ready(function () {
        $.ajax({
            "url": "Handlers/jQueryDatatableHandler.ashx",
            "data": { Operation: 'EmployeeList', searchText: '' },
            success: function (data) {
                json = JSON.parse(data);
                columns = [];
                // build column titles
                for (var i = 0; i < json.colnames.length; i++) {
                    columns.push({ title: json.colnames[i] });
                }

                var table = $('#example').DataTable({
                    "responsive": true,
                    "processing": true, 
                    "serverSide": true,
                    "order": [[4, 'desc']],
                    data: json.rows,
                    columns: columns,
                    columnDefs: [
                        {
                            targets: 0,                           
                            render: function (data, type, row) {
                                if (type === 'display') {
                                    return '<input type="checkbox" class="editor-active">';
                                }
                                return data;
                            },
                            className: "dt-body-center",
                            "orderable": false,
                            "searchable": false
                        },
                        {
                            targets: 1,
                            visible: false
                        },
                        {
                            targets: -1,
                            visible: false
                        }
                    ]
                });
            }
        });

jQueryDatatableHandler.ashx code

  public class DatatableInboxResults
  {
    public int draw { get; set; }
    public int recordsTotal { get; set; }
    public int recordsFiltered { get; set; }
    public List<string> colnames;
    public List<string[]> rows { get; set; }
  }

private string BuildDatatableResults()
{
    EmployeeListParameters mlp = new EmployeeListParameters();       
    mlp.numberOfRows = "10"; //not sure how to pass this value
    mlp.pageIndex = "1"; //not sure how to pass this value
    mlp.sortColumnName = sortColumnName; //not sure how to pass this value
    mlp.sortOrderBy = sortOrderBy; //not sure how to pass this value       
    mlp.searchText = searchTxt;

    DatatableInboxResults result = new DatatableInboxResults();
    result.colnames = new List<string>();

    result.colnames.Add(" ");
    result.colnames.Add("EmployeeId");
    result.colnames.Add("Name");
    result.colnames.Add("Title");
    result.colnames.Add("Joining");
    result.colnames.Add("Viewed");

    int totalRecords;
    int colCount = result.colnames.Count;;
    List<string> rows = new List<string>();
    result.rows = new List<string[]>();
    EmployeeViewerDataProvider mvdp = new EmployeeViewerDataProvider ();
    List<NEmployee> empList;
    msgList = mvdp.GetEmployeeDetails(mlp, out totalRecords);//subscriptionId, username, numberOfRows, pageIndex, sortColumnName, sortOrderBy,strText, out totalRecords);

    foreach (NEmployee msg in empList)
    {
        string[] row = new string[colCount];

        row[0] = "0";
        row[1] = msg.EmployeeId.ToString();
        row[2] = msg.Name;
        row[3] = msg.Title;
        row[4] = TimeZoneInfo.ConvertTimeFromUtc(msg.TimeSent, tinfo).ToString();
        row[5] = msg.Viewed.ToString();

        result.rows.Add(row);
    }
    result.recordsTotal = (Convert.ToInt32(totalRecords) + Convert.ToInt32(mlp.numberOfRows) - 1) / Convert.ToInt32(mlp.numberOfRows);

    return new JavaScriptSerializer().Serialize(result);
}

Это работает нормально, если я устанавливаю серверную обработку на false, но когда я делаю это, возникают определенные ошибки. Может кто-нибудь, пожалуйста, помогите мне или предложите, как передать параметры в коде, чтобы он работал нормально.

Посоветуйте, пожалуйста, как это сделать.

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

$ (документ) .ready (function () { $ ( '# Идентификатор'). DataTable ({
уничтожить: правда, "serverSide": правда, «Обработка»: правда, "ajax": {
"URL": "ваш URL", "type": "POST", "данные": {} }, }); });

0 голосов
/ 06 ноября 2018

Согласно документации DataTables , «обработка на стороне сервера включается путем установки для параметра serverSide значения true и предоставления источника данных Ajax через ajax option. ».

Когда я смотрю на ваш код, я не вижу, чтобы вы использовали это ajax option.

Кроме того, если вы хотите использовать обработку на стороне сервера, вы можете инициализировать экземпляр DataTable, как только ваш документ будет готов, вместо того, чтобы использовать обратный вызов ajax success . Что-то вроде:

$(document).ready(function() {
    $('#example').DataTable( {
        "processing": true,
        "serverSide": true,
        "ajax": "Handlers/jQueryDatatableHandler.ashx"
    } );
} );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...