Я застрял в этой проблеме и буду признателен за любую помощь ... (Олег, ты здесь ????)
У меня есть jqgrid, который выполняет сортировку, поиск на стороне сервера, я знаю, что на сервере также должна быть разбита страница на страницы, я нашел метод webService, который будет делать это, но когда я нажимаю на любую из кнопок подкачки, ничего не происходит и вызов не отправляется на сервер.
Может ли кто-нибудь помочь мне, пожалуйста, и посмотреть, что я не так в моем коде ???
Мой код - пара:
$(myGrid).jqGrid({
datatype: function (pdata) {
Invoke("GetAll", pdata);
},
colNames: columnNames,
colModel: columnModel,
jsonReader: {
root: "Result",
page: "page",
total: "total",
records: "records"
},
rowNum: 10,
//rowList: [5, 10, 20, 30],
pager: '#ViewNQueryPager',
viewrecords: true,
shrinkToFit: true,
loadtext: "Loading....",
emptyrecords: "No records to view",
viewrecords: true,
//scrollOffset: 0,
height: '300',
//width: '100%',
ignoreCase: true,
sortname: 'ID',
sortable: true,
sortorder: 'asc',
grouping: true,
groupingView: {
groupField: ['ID']
}
});
$(myGrid).jqGrid('navGrid', '#ViewNQueryPager', { del: false, add: false, edit: false }, {}, {}, {}, { multipleSearch: true, multipleGroup: true, showQuery: true, onSearch: function (response) { showQueryDetails(); } });
$(myGrid).jqGrid('filterToolbar', { stringResult: true, searchOnEnter: true });
$(myGrid).fluidGrid({ base: '#tableBox', offset: -20 });
function Invoke(action, pdata) {
var request = new Object();
if (pdata.filters == undefined && pdata._search == false)
request.Action = "Sort";
else {
if (pdata.filters != undefined && pdata._search == false)
request.Action = action;
else request.Action = "Filter";
}
if (pdata) {
request.SortIndex = pdata.sidx;
request.SortOrder = pdata.sord;
request.PageNumber = pdata.page;
request.PageSize = pdata.rows;
request._search = pdata._search;
request.filters = pdata.filters;
}
var cRequest = new Object();
cRequest.request = request;
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: 'WebService.asmx/Get',
ajaxGridOptions: { contentType: 'application/json; charset=utf-8' },
dataType: "json",
data: JSON.stringify(cRequest),
success: function (xhrResponse, textStatus) {
var data = xhrResponse.d;
var table = $('#ViewNQueryTable');
table.clearGridData();
//table.total = data.total;
for (var i = 0; i < data.Result.length; i++) {
table.addRowData(i + 1, data.Result[i], 'last');
}
$('#totalRecordsFound').html(data.records + " Customers");
pdata.filters = undefined;
pdata._search = false;
},
error: function (data, textStatus) {
alert("Error fetching data");
}
});
}
Я пытался добавить это:
onPaging: function (which_button) {
doSomething()
}
Но это не помогло.
Как получить кнопки пейджинга для вызова метода сервера?
EDIT
Мой веб-метод такой:
[WebMethod]
public kResponse Get(kRequest request)
{
if (count == 0)
{
CurrentList = JsonHelper.GetPersons();
count++;
}
var response = new kResponse();
switch (request.Action)
{
case "GetAll":
var result = new List<Person>();
var list = JsonHelper.GetPersons();
CurrentList = list;
response.records = CurrentList.Count;
response.total = response.records / request.PageSize;
//response.total = list.Count;
response.page = request.PageNumber;
for (int i = 0; i < 10; i++)
{
result.Add(list[i]);
}
//response.Result = result;
response.Result = list;
break;
case "Filter":
var filterParams = Filter.Create(request.filters);
List<Person> FilterdList = GetFilteredList(filterParams);
CurrentList = FilterdList;
response.Result = CurrentList;
response.records = CurrentList.Count();
response.total = response.records / request.PageSize;
//response.total = list.Count;
response.page = request.PageNumber;
break;
case "Sort":
//var listPersons = JsonHelper.GetPersons();
IQueryable<Person> SortedList = ApplySort(CurrentList.AsQueryable(), request.SortIndex, request.SortOrder);
CurrentList = SortedList.ToList();
response.Result = CurrentList;
response.records = CurrentList.Count();
response.total = response.records / request.PageSize;
//response.total = list.Count;
response.page = request.PageNumber;
break;
case "NextPage":
List<Person> allList = JsonHelper.GetPersons();
IQueryable<Person> NextPagelist = allList.AsQueryable();
NextPagelist = NextPagelist.Skip(request.PageNumber * request.PageSize).Take(request.PageSize).AsQueryable();
response.Result = NextPagelist;
response.records = NextPagelist.Count();
response.total = response.records / request.PageSize;
//response.total = list.Count;
response.page = request.PageNumber++;
break;
}
return response;
}
с классом:
public class kRequest
public string Action { get; set; }
public int PageSize { get; set; }
public int PageNumber { get; set; }
public string SortIndex { get; set; }
public string SortOrder { get; set; }
public string Search { get; set; }
public bool _search { get; set; }
public string filters { get; set; }
и
public class kResponse
//public int Total { get; set; }
public object Result { get; set; }
public int page { get; set; }
public int total { get; set; }
public int records { get; set; }
//public GridRow[] rows { get; set; }
за пейджер, который я пробую:
$('#next_ViewNQueryPager').click(function () {
grid.Action = "NextPage";
triggerReloadGrid();
});
но я уверен, что это не так ... что ?? 1033 *