Как использовать jqGrid с C #/ASP.NET и JSON.NET (и никаких материалов AJAX.NET)?
-
20-08-2019 - |
Вопрос
Хорошо, я изучал это несколько дней и не совсем уверен, что я делаю не так.Если у кого-нибудь есть рабочие примеры использования 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, пожалуйста, взгляните здесь.Это должно сэкономить вам уйму времени.