@蒂姆·詹姆斯
我已经做到了,但是我尝试使用它的原因是无视的。仅提取80条记录需要花费大量时间。在这里找到我的客户代码。
$(document).ready(function () { var grid = $('#tblMessages').dataTable({ "sDom": 'T<"clear">lfrtip', "oLanguage": { "sSearch": "Search the Messages:" }, "aLengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]], "iDisplayLength": 25, "oTableTools": { "aButtons": [ "copy", "csv", "xls", { "sExtends": "pdf" }, "print" ] }, "bProcessing": true, "bSort": true, "sPaginationType": "full_numbers", "bServerSide": true, "sAjaxSource": "../QCDataServices.asmx/GetPatients", "fnServerData": function (sSource, aoData, fnCallback) { var jsonAOData = JSON.stringify(aoData); $.ajax({ type: "POST", //dataType: "json", contentType: "application/json; charset=utf-8", url: sSource, data: "{jsonAOdata: '" + jsonAOData + "'}", success: function (msg) { fnCallback(JSON.parse(msg.d)); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert(XMLHttpRequest.status); alert(XMLHttpRequest.responseText); } }); }, "aoColumnDefs": [ { "fnRender": function (oObj) { return "<a href='../FrmMessage.aspx?id='" + oObj.aData[0] + "><img src='../../images/SMS.png'/></a>"; }, "bSortable": false, "aTargets": [0] }, { "sName": "PatientName", "bSearchable": true, "aTargets": [1] }, { "sName": "Address", "bSearchable": true, "bSortable": true, "aTargets": [2] }, { "sName": "ContactNo", "aTargets": [3] }, { "sName": "MobileNo", "aTargets": [4] }, { "sName": "BPL Card No", "aTargets": [5] } ] }); grid.fnSetFilteringDelay(1000); });我已使用此链接提供的解决方案 http://activeengine.wordpress.com/2011/02/09/datatablepager-
now-has-multi-column-sort-capability-for-datatables-
net/
我的Web服务方法是
[WebMethod(EnableSession = true)] [scriptMethod(ResponseFormat = ResponseFormat.Json)] public string GetPatients(string jsonAOData) { var patients= Patients("", "", ""); var dataTablePager = new DataTablePager<Patient>(jsonAOData, patients); var formattedList = dataTablePager.Filter(); return JsonConvert.SerializeObject(formattedList); } [WebMethod(EnableSession = true)] public IQueryable<Patient> Patients(string searchIn, string Operator, string searchString) { IQueryable<Patient> result ; try { DataRow[] rows; var table = new dsVw_Patients.vw_PatientsDataTable(); var adapter = new vw_PatientsTableAdapter(); adapter.Fill(table); //DataTable distinctTable = originalTable.DefaultView.ToTable( true); var hid = Context.Session["HospitalId"] == null ? "0" : Context.Session["HospitalId"].ToString(); var rid = Context.Session["RoleId"] == null ? "0" : Context.Session["RoleId"].ToString(); var uid = Context.Session["UserId"] == null ? "0" : Context.Session["UserId"].ToString(); if (searchIn.Equals("")) { rows = hid.Equals("0") ? table.DefaultView.ToTable(true).Select("1=1", "PatientName ASC") : table.DefaultView.ToTable(true).Select("HospitalId="+hid, "PatientName ASC"); if(rid.Equals("5")) rows = table.DefaultView.ToTable(true).Select("UserId="+uid, "PatientName ASC"); } else { if (hid.Equals("0")) { rows = Operator.Contains("%") ? table.DefaultView.ToTable(true).Select(searchIn + " like '" + Operator.Replace("_", searchString) + "'", searchIn + " ASC") : table.DefaultView.ToTable(true).Select(searchIn + " " + Operator + " '" + searchString + "'", searchIn + " ASC"); } else { rows = Operator.Contains("%") ? table.DefaultView.ToTable(true).Select("HospitalId=" + hid+" and "+searchIn + " like '" + Operator.Replace("_", searchString) + "'", searchIn + " ASC") : table.DefaultView.ToTable(true).Select("HospitalId=" + hid + " and " + searchIn + " " + Operator + " '" + searchString + "'", searchIn + " ASC"); } if (rid.Equals("5")) { rows = Operator.Contains("%") ? table.DefaultView.ToTable(true).Select(searchIn + " like '" + Operator.Replace("_", searchString) + "'", searchIn + " ASC") : table.DefaultView.ToTable(true).Select(searchIn + " " + Operator + " '" + searchString + "'", searchIn + " ASC"); } } //.Skip(pageSize*pageNumber).Take(pageSize).ToList(). var tieup=new clsTieUpCompanies(); result = rows.Select(row => new Patient{ PatientId = Convert.ToInt32(row["PatientId"]), PatientName = row["PatientName"].ToString(), Address = row["Address"].ToString(), Street = row["Street"].ToString(), City = row["City"].ToString(), ContactNo = row["Contactno"].ToString(), MobileNo = row["MobileNo"].ToString(), Email = row["Email"].ToString(), State = row["State"].ToString(), Country = row["Country"].ToString(), BPLCardNo = row["BPLCardNo"].ToString(), Company = tieup.GetTieupCompanyName(Convert.ToInt32(row["CompanyId"]))}).AsQueryable(); } catch (Exception) { result = null; } return result; }请指导如何提高性能。



