Я хочу использовать настраиваемое свойство jqgrid для сохранения некоторого значения сеанса ASP.NET на странице, но, похоже, не может заставить его работать.Пользовательское свойство jqgrid не может быть изменено?
Сетка определена ниже, с пользовательским свойством «MyVariable».
$("#myGrid").jqGrid({
url: RootAbsolutePath + "Customer/GetCustomerList",
datatype: "json",
mtype: 'POST',
page: 1,
rowNum: 10,
rowList: [10, 20, 30],
pager: $("#myPager"),
toppager: true,
colNames: column_names,
colModel: [
{ name: "CUSTOMERNUMBER", index: "CUSTOMERNUMBER", width: 150, align: "center", "formatter": customerEditLink },
{ name: "DEALERSHIPID", index: "DEALERSHIPID", width: 150, align: "center", stype: "select", searchoptions: { "value": dealerShopSelector} },
{ name: "IDENTITYNUMBER", index: "IDENTITYNUMBER", width: 150, align: "center" },
{ name: "CUSTOMERNAME", index: "CUSTOMERNAME", width: 150, align: "left" },
{ name: "CUSTOMERTYPE", index: "CUSTOMERTYPE", width: 120, align: "center", "stype": "select", "searchoptions": { "value": typeSelector} },
{ name: "MOBILE", index: "MOBILE", width: 120, align: "center" },
{ name: "ADDRESS", index: "ADDRESS", width: 400, align: "left" },
],
autowidth: true,
shrinkToFit: false,
height: "100%",
viewrecords: true,
hoverrows: true,
sortname: "CUSTOMERNAME",
sortorder: "asc",
MyVariable: "Hello World!"
});
В контроллере я установил значение MYVARIABLE и возвращения данных Json, надеясь сохранять это значение на сетке:
public JsonResult GetCustomerList()
{
var model = new someModel();
List<object> listOfObjects = new List<object>();
// do something with the model and get data into listOfObjects
var jsonData = new
{
total = model.TotalPages,
page = model.page,
records = model.totalRecords,
MyVariable = "Hello Controller!",
rows = listOfDataObjects
};
return Json(jsonData, JsonRequestBehavior.AllowGet);
}
Теперь попробуйте открыть variale после страницы загружаются.
var $grid = $('#myGrid');
alert($grid.jqGrid('getGridParam', 'MyVariable'));
Он всегда показывает «Hello World», а не «Hello Controller!». Означает ли это, что пользовательское свойство не может быть изменено после загрузки сетки?
Во-вторых, в этом примере, если пользователь выбирает заголовок столбца CUSTOMERTYPE для фильтрации данных, как мне получить значение отфильтрованного критерия?
Я новичок в jqGrid, и это безумно, чтобы получить простую вещь для работы. Любая помощь действительно ценится!
К сожалению, где именно должна эта функция loadComplete быть добавлены? Я попытался добавить в jqGrid, но выдает исключение, которое не имеет такого метода. – user2361287
@ user2361287: Это функция обратного вызова. Вы должны добавить его, как и любой другой вариант jqGrid ('colModel',' datatype' и т. Д.). – Oleg
Спасибо, Олег. Я нашел свою проблему, я скопировал setGridparam. Он должен быть установленGridParam. Теперь я близок к решению моей проблемы, пользовательское свойство MyVariable теперь обновляется в сетке. Но мне все равно нужно получить эту переменную в классе Controller в C#. Есть простой способ, не проходящий как параметр url, потому что эта переменная может содержать много специальных символов и приведет к аннулированию URL-адреса? – user2361287