Как использовать jqGrid с C #/ASP.NET и JSON.NET (и никаких материалов AJAX.NET)?

StackOverflow https://stackoverflow.com/questions/1045870

Вопрос

Хорошо, я изучал это несколько дней и не совсем уверен, что я делаю не так.Если у кого-нибудь есть рабочие примеры использования jqGrid с C # / ASP.NET и инструментами с открытым исходным кодом, пожалуйста, пожалуйста, дайте мне знать, где их найти.Также были бы весьма признательны любые советы по поиску достойной документации или инструментов, которые я мог бы использовать для отладки этого (я довольно новичок в js / jQuery).По сути, мне просто нужна функциональность редактирования на месте, поэтому, если я упускаю из виду другое очевидное решение для этого, было бы полезно знать...Я бы хотел избежать использования AJAX.NET, если это вообще возможно.

У меня такое чувство, что я просто упускаю из виду здесь что-то действительно очевидное.

В следующем примере я получаю jqGrid для отображения, но он не показывает никаких данных.

Вот соответствующий JavaScript:

jQuery(document).ready(function(){ 
    jQuery("#role_assignment_table").jqGrid({ 
        url:'http://localhost:4034/WebSite2/PageItemHandler.asmx/GetPageItemRolesJson?id=3',
        mtype: 'GET',
        contentType: "application/json; charset=utf-8",
        datatype: "jsonstring",
        colModel:[
            {name:'Id', label:'ID', jsonmap:'Id'},
            {name:'Title', jsonmap:'Title'},
            {name:'AssignedTo', label:'Assigned To', jsonmap:'AssignedTo'},
            {name:'Assigned', jsonmap:'Assigned'},
            {name:'Due', jsonmap:'Due'},
            {name:'Completed', jsonmap:'Completed'}
        ],
        jsonReader: {
            page: "Page",
            total: "Total",
            records: "Records",
            root: "Rows",
            repeatitems: false,
            id: "Id"
        },
        rowNum:10,
        rowList:[10,20,30],
        imgpath: 'js/themes/basic/images',
        viewrecords: false,
        caption: "Role Assignments" 
    });  
});

HTML - код:

<table id="role_assignment_table" class="scroll" cellpadding="0" cellspacing="0" />

Сгенерированный JSON: Я не уверен, попадает ли это в jqGrid, или jqGrid не нравится мой JSON или мой веб-метод, но я могу вызвать его сам, когда перейду по нужному URL и получу результирующую строку JSON.

{"Page":"1","Total":1.0,"Records":"4",
"Rows":[
{"Id":1,"Item":null,"Title":"Story Manager","AssignedTo":null,"Assigned":"\/Date(1245186733940-0500)\/","Due":"\/Date(1248383533940-0500)\/","Completed":"\/Date(1247087533940-0500)\/"},
{"Id":2,"Item":null,"Title":"Analysis","AssignedTo":null,"Assigned":"\/Date(1245186733940-0500)\/","Due":"\/Date(1248383533940-0500)\/","Completed":"\/Date(1247087533940-0500)\/"},
{"Id":3,"Item":null,"Title":"Narrative","AssignedTo":null,"Assigned":"\/Date(1245186733940-0500)\/","Due":"\/Date(1248383533940-0500)\/","Completed":"\/Date(1247087533940-0500)\/"},
{"Id":4,"Item":null,"Title":"Graphic","AssignedTo":null,"Assigned":"\/Date(1245186733940-0500)\/","Due":"\/Date(1248383533940-0500)\/","Completed":"\/Date(1247087533940-0500)\/"}
]
}

Приветствия, Уильям Райли-Ленд

Это было полезно?

Решение

Прежде чем делать что-либо еще, загрузите и установите это:

http://www.fiddler2.com/fiddler2/

Это позволит вам точно увидеть, что запрашивается и отправляется обратно запросами jqGrid для получения данных JSON.

У меня есть некоторый код для рабочей jqGrid, и вот кое-что другое:

datatype: "json"

Вместо вашего:

datatype: "jsonstring"

У меня также есть поле под названием colNames который представляет собой массив строк, содержащих имена столбцов.

Наконец-то у меня есть pager поле, которое идентифицирует элемент, в котором будут храниться элементы управления подкачкой, и является DIV.

Другие советы

В ASP.NET Дата сериализуется как JSON "/Дата(галочки)/" который не может быть интерпретирован jqGrid.Возможные решения (Публикация):

  • напишите пользовательский форматировщик для сетки
  • измените данные, которые мы отправляем в таблицу (отправив форматированную дату в виде строки)

Расскажите , пожалуйста , как вы реализовали отображение даты с помощью jqGrid ?

Спасибо.

Будьте осторожны со свойством, учитывающим регистр тип данных предназначено для того, чтобы быть Тип данных с прописной буквы T.

У меня была точно такая же проблема!Решение, которое я придумал, заключается в создании пользовательского форматера JavaScript:

$(this).jqGrid({  
   ...
   colModel: [
      {
      name: 'SomeDate', index: 'SomeDate', width: 100, formatter: ndateFormatter }
      }],
   ...
});


// Convert C# json Date.
function ndateFormatter(cellval, opts, rwdat, _act) {
    var time = cellval.replace(/\/Date\(([0-9]*)\)\//, '$1');
    var date = new Date();
    date.setTime(time);
    return date.toDateString();
}

Если у вас возникли проблемы с получением jqGrid для работы ASP.NET, пожалуйста, взгляните здесь.Это должно сэкономить вам уйму времени.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top