Note that there are some explanatory texts on larger screens.

plurals
  1. POjqGrid url not getting called with server side paging & sorting & postData: Form.searialize() in MVC 4
    primarykey
    data
    text
    <p>I am implementing server side paging &amp; sorting for jqGrid in MVC 4. I am passing view model object as postData to jqGrid url action method. have a look at grid definition.</p> <pre><code>var isGridDefined = false; $(document).ready(function () { function DefineGrid(Year, Month) { var mygrid = $("#RptUpload"); mygrid.jqGrid({ loadonce: false, async: false, datatype: 'json', postData: { bReload: true, Year: Year, Month: Month }, url: '@Url.Action("DMEUploadDetailsList", "Reports")', jsonReader: { repeatitems: false, root: "DataRows" }, colNames: ['@VirtuOxAdmin.DMEUploadDetails_Grid_RptUpload_OrderID', '@VirtuOxAdmin.DMEUploadDetails_Grid_RptUpload_CompanyName', '@VirtuOxAdmin.DMEUploadDetails_Grid_RptUpload_PatientID', '@VirtuOxAdmin.DMEUploadDetails_Grid_RptUpload_PatientName', "@VirtuOxAdmin.DMEUploadDetails_Grid_RptUpload_DOB", '@VirtuOxAdmin.DMEUploadDetails_Grid_RptUpload_Insurance', "@VirtuOxAdmin.DMEUploadDetails_Grid_RptUpload_UploadDate" ], colModel: [ { name: 'ReadingID', index: 'ReadingID', width: 55, fixed: true, sorttype: 'integer', align: 'center' }, { name: 'CompanyName', index: 'CompanyName', align: 'center', width: 200, cellattr: function (rowId, tv, rawObject, cm, rdata) { return 'style="white-space: normal!important;' }, }, { name: 'PatientID', index: 'PatientID', width: 55, fixed: true, sorttype: 'integer', align: 'center' }, { name: 'PatientName', index: 'PatientName', align: 'center', width: 200, cellattr: function (rowId, tv, rawObject, cm, rdata) { return 'style="white-space: normal!important;' }, }, { name: 'DOB', index: 'DOB', width: 80, fixed: true, sorttype: 'date', formatter: 'date', formatoptions: { srcformat: 'm/d/Y', newformat: 'm/d/Y' }, align: 'center' }, { name: 'InsuranceType', index: 'InsuranceType', align: 'center', width: 150, cellattr: function (rowId, tv, rawObject, cm, rdata) { return 'style="white-space: normal!important;' }, }, { name: 'UploadDate', index: 'UploadDate', width: 80, fixed: true, sorttype: 'date', formatter: 'date', formatoptions: { srcformat: 'm/d/Y', newformat: 'm/d/Y' }, align: 'center' } ], rowNum: 20, rowList: [20, 50, 100, 200], pager: '#UploadPager', caption: '@VirtuOxAdmin.DMEUploadDetails_Grid_RptUpload_Title', viewrecords: true, height: 'auto', width: 770, hidegrid: false, shrinkToFit: true, scrollOffset: 0, headertitles: true, loadError: function (xhr, status, error) { alert(status + " " + error); }, //onPaging: function (pgButton) { // $("#RptUpload").jqGrid("setGridParam", { postData: { bReload: false } }); //}, loadCompete: function () { $("#RptUpload").jqGrid("setGridParam", { datatype: 'json', postData: { bReload: false } }); } }); mygrid.navGrid('#UploadPager', { edit: false, add: false, del: false, search: false, refresh: false }); isGridDefined = true; } $("#rptRefresh").click(function (e) { e.preventDefault(); var Form = $("form[id='FrmDMEUploadDetails']"); Form.validate(); if (Form.valid()) { RemoveValidatioMessages(); $("#gridContainer").show(); var Year = $("#Year").val(); var Month = $("#Month").val(); if (!isGridDefined) DefineGrid(Year, Month); else $("#RptUpload").jqGrid("setGridParam", { datatype: "json", page: 1, postData: { bReload: true, Year: Year, Month: Month } }).trigger("reloadGrid"); } else { $("#RptUpload").clearGridData(); $("#gridContainer").hide(); } $(".chzn-select-deselect").trigger("liszt:updated"); return false; }); }); </code></pre> <p>&amp; my action method is as follows</p> <pre><code>public ActionResult DMEUploadDetailsList(bool bReload, string Year, string Month, string nd, int rows, int page, string sidx, string sord, string filters) { DataSet SearchResult = null; List&lt;ReportData&gt; ResultRows = new List&lt;ReportData&gt;(); JQGridResult Result = new JQGridResult(); if (bReload) { SearchResult = DB.ExecuteDataset("ConnectionString", "pc_GetUploadDetail", new SqlParameter("@Year", Year), new SqlParameter("@Month", Month)); Common.SetSession(SearchResult, null, "DMEUploadByMonth"); } else SearchResult = SessionManager.GetSession().GetAttribute("DMEUploadByMonth") as DataSet; if (SearchResult != null) { DataTable dtSearchResult = SearchResult.Tables[0]; # region Handle server side Filtering, sorting and paging int totalRecords = dtSearchResult.Rows.Count; //before paging int totalPages = (int)Math.Ceiling((decimal)totalRecords / (decimal)rows); //--- number of pages int startIndex = ((page &gt; 0 ? page - 1 : 0) * rows); if (sidx != "") { dtSearchResult.DefaultView.Sort = sidx + " " + sord; dtSearchResult = dtSearchResult.DefaultView.ToTable(); } # endregion for (int i = startIndex; i &lt; dtSearchResult.Rows.Count; i++) { ResultRows.Add(new ReportData() { ReadingID = Convert.ToInt32(dtSearchResult.Rows[i][0]), CompanyName = Convert.ToString(dtSearchResult.Rows[i][1]), PatientID = Convert.ToInt32(dtSearchResult.Rows[i][2]), PatientName = Convert.ToString(dtSearchResult.Rows[i][3]), DOB = (dtSearchResult.Rows[i][4] != DBNull.Value ? Convert.ToDateTime(dtSearchResult.Rows[i][4]) : (DateTime?)null), InsuranceType = Convert.ToString(dtSearchResult.Rows[i][5]), UploadDate = (dtSearchResult.Rows[i][6] != DBNull.Value ? Convert.ToDateTime(dtSearchResult.Rows[i][6]) : (DateTime?)null) }); if (ResultRows.Count == rows) break; } Result.DataRows = ResultRows; Result.page = page; Result.total = totalPages; Result.records = totalRecords; } return Json(Result, JsonRequestBehavior.AllowGet); } </code></pre> <p>The problem with current implementation is that my action method <strong>DMEUploadDetailsList</strong> is not getting called though view model object is getting passed to request successfuly. &amp; This implementation were working fine when used client side paging &amp; sorting. Please suggest me If I am missing anything or correct my mistakes to get server side paging &amp; sorting working. </p> <p>This grid is defined or reloaded on refresh button. Now what I want is to identify whether action method is called on refresh button click or paging &amp; sorting operation?</p> <p><strong>[ Now I would like to describe the last two sentence of problem statement. It specifies that when my page is loaded grid is not defined. As soon as I select filter &amp; clicks refresh button my grid is defined for first time &amp; reloaded for subsequent clicks of refresh. If you go through the action method code you will see that i am trying to use bReload bit variable for, when it is true [in case of refresh button click] I would like to query data from SQL otherwise from dataset stored in session [in case of paging or sorting request]. Now If you looked at the postData parameter in definition or in reload call I am passing breload as true. Where as I am not aware of how can I override this parameter to false when user request for sorting &amp; paging. Or else if there is any another simple way with which in action method I can get whether this request is of load data or paging &amp; sorting.]</strong></p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload