私はasp.netmvcでjqgridを使用しています。
私の見解:
$("#phoneGrid").jqGrid({
url: '/Demo/_PhoneChangeData',
datatype: 'json',
ajaxGridOptions: { contentType: 'application/json; charset=utf-8' },
serializeGridData: function (postData) {
if (postData.searchField === undefined)
postData.searchField = null;
if (postData.searchString === undefined)
postData.searchString = null;
if (postData.searchOper === undefined)
postData.searchOper = null;
return JSON.stringify(postData);
},
jsonReader: {
root: "rows",
page: "page",
total: "total",
records: "records",
cell:"cell",
id: "id"
},
postData:
{
accountNumber: "@Model.AccountNumber",
},
autoWidth: true,
shrinkToFit: false,
mtype: 'POST',
colNames: ['Phone Number', 'Update Date', 'Update Time'],
colModel: [
{ name: 'PhoneNumber', width:100, align: 'left' },
{ name: 'UpdateDate', width: 100, align: 'left' },
{ name: 'UpdateTime', width: 100, align: 'left' }],
rowNum: 10,
rowList: [],
pager: "#pagerphonedetail",
viewrecords: true,
rownumbers: true,
pgtext: null,
width: 346,
height: 232
});
私のコントローラー:
public ActionResult _PhonePopupChangeData(string accountNumber,
int page, int rows, string sidx, string sord,
bool _search, string searchField, string searchOper, string searchString)
{
var phdetail = query.GetPhoneUpdHistory(accountNumber);// returns a list
int recordsCount = phdetail.Count;
var viewData = phdetail.Select((p, index) => new TableRow
{
id = index + 1,
cell = new List<string> {
p.PhoneNumber, p.UpdateDate, p.UpdateTime
}
}).ToArray();
var jsonData = new
{
total = (recordsCount + rows - 1) / rows,
page = page,
records = recordsCount,
rows = viewData
};
return Json(jsonData, JsonRequestBehavior.AllowGet);
}
質問: 私の問題は、ポストバック(ページングの[次へ]をクリックした場合)ごとにグリッドの行が更新されないことです。スクリーンショットにはページ番号が更新されていることが示されていますが、それでもグリッドの最初の10行が取得されます。更新されることはありません。私の質問がわからない場合はお知らせください。