在 JqGrid 中显示超过 10000 条记录
Display More then 10000 records in JqGrid
在我的数据库中 table 我有超过 30,000 条记录,这里我试图在 JqGrid 中显示这些记录,这里我只显示最多 900 条记录,如何我可以在 JqGrid 中显示所有记录吗,这里附上我的代码。
<script type="text/javascript">
$(function () {
$("#dataGrid").jqGrid({
url: 'Default.aspx/GetDataFromDB',
datatype: 'json',
mtype: 'POST',
overflow:'visible',
serializeGridData: function (postData) {
return JSON.stringify(postData);
},
ajaxGridOptions: { contentType: "application/json" },
loadonce: true,
colNames: ['AOfficeKey', 'AChartNumber', 'APatientName', 'AVisit#'],
colModel: [
{ name: 'AOfficeKey', index: 'AOfficeKey', width: 80 },
{ name: 'AChartNumber', index: 'AChartNumber', width: 150 },
{ name: 'APatientName', index: 'APatientName', width: 160 },
{ name: 'AVisit#', index: 'AVisit#', width: 160 }
],
pager: '#pagingGrid',
rowNum: 100,
height: 300,
width:600,
rowList: [10, 100, 1000, 10000],
gridview: true,
viewrecords: true,
gridview: true,
jsonReader: {
page: function (obj) { return 1; },
total: function (obj) { return 1; },
records: function (obj) { return obj.d.length; },
root: function (obj) { return obj.d; },
repeatitems: false,
id: "0"
},
});
});
</script>
</head>
<body style="font-family: Arial; font-size: 10pt">
<table style="border: solid 1px ; width: 100%; vertical-align: central;">
<tr>
<td style="padding-left: 20px; padding-top: 20px; padding-bottom: 20px; font-family: 'Times New Roman'; font-weight: bold; font-size: 20pt; color: chocolate;">
</td>
</tr>
<tr>
<td style="text-align: center; vertical-align: central; padding: 100px;">
<table id="dataGrid" style="text-align: center; width: 100%;"></table>
<div id="pagingGrid"></div>
</td>
</tr>
</table>
C#代码是
[WebMethod]
public static List<Dictionary<string, object>> GetDataFromDB()
{
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(@"Data Source=Abc;Database=Training;User Id=sa;Password=abc;"))
{
using (SqlCommand cmd = new SqlCommand("SELECT * AOfficeKey,AChartNumber, APatientName,AVisit# from adjs", con))
//("SELECT ID,Client,Location,Address FROM AClients ", con))
{
con.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
Dictionary<string, object> row;
foreach (DataRow dr in dt.Rows)
{
row = new Dictionary<string, object>();
foreach (DataColumn col in dt.Columns)
{
row.Add(col.ColumnName, dr[col]);
}
rows.Add(row);
}
return rows;
}
}
}
我试过你的代码,没有错误。但是,为了从服务器加载大数据,您需要在使用 json 序列化时增加允许的 JSON 大小。为了在 标签中将以下代码添加到您的 web.config:
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="50000000"/>
</webServices>
</scripting>
</system.web.extensions>
在我的数据库中 table 我有超过 30,000 条记录,这里我试图在 JqGrid 中显示这些记录,这里我只显示最多 900 条记录,如何我可以在 JqGrid 中显示所有记录吗,这里附上我的代码。
<script type="text/javascript">
$(function () {
$("#dataGrid").jqGrid({
url: 'Default.aspx/GetDataFromDB',
datatype: 'json',
mtype: 'POST',
overflow:'visible',
serializeGridData: function (postData) {
return JSON.stringify(postData);
},
ajaxGridOptions: { contentType: "application/json" },
loadonce: true,
colNames: ['AOfficeKey', 'AChartNumber', 'APatientName', 'AVisit#'],
colModel: [
{ name: 'AOfficeKey', index: 'AOfficeKey', width: 80 },
{ name: 'AChartNumber', index: 'AChartNumber', width: 150 },
{ name: 'APatientName', index: 'APatientName', width: 160 },
{ name: 'AVisit#', index: 'AVisit#', width: 160 }
],
pager: '#pagingGrid',
rowNum: 100,
height: 300,
width:600,
rowList: [10, 100, 1000, 10000],
gridview: true,
viewrecords: true,
gridview: true,
jsonReader: {
page: function (obj) { return 1; },
total: function (obj) { return 1; },
records: function (obj) { return obj.d.length; },
root: function (obj) { return obj.d; },
repeatitems: false,
id: "0"
},
});
});
</script>
</head>
<body style="font-family: Arial; font-size: 10pt">
<table style="border: solid 1px ; width: 100%; vertical-align: central;">
<tr>
<td style="padding-left: 20px; padding-top: 20px; padding-bottom: 20px; font-family: 'Times New Roman'; font-weight: bold; font-size: 20pt; color: chocolate;">
</td>
</tr>
<tr>
<td style="text-align: center; vertical-align: central; padding: 100px;">
<table id="dataGrid" style="text-align: center; width: 100%;"></table>
<div id="pagingGrid"></div>
</td>
</tr>
</table>
C#代码是
[WebMethod]
public static List<Dictionary<string, object>> GetDataFromDB()
{
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(@"Data Source=Abc;Database=Training;User Id=sa;Password=abc;"))
{
using (SqlCommand cmd = new SqlCommand("SELECT * AOfficeKey,AChartNumber, APatientName,AVisit# from adjs", con))
//("SELECT ID,Client,Location,Address FROM AClients ", con))
{
con.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
Dictionary<string, object> row;
foreach (DataRow dr in dt.Rows)
{
row = new Dictionary<string, object>();
foreach (DataColumn col in dt.Columns)
{
row.Add(col.ColumnName, dr[col]);
}
rows.Add(row);
}
return rows;
}
}
}
我试过你的代码,没有错误。但是,为了从服务器加载大数据,您需要在使用 json 序列化时增加允许的 JSON 大小。为了在
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="50000000"/>
</webServices>
</scripting>
</system.web.extensions>