如题,我感觉我的代码是正确的,可是一直不出数据。看了好多帖子,试了各种办法,都没用,我快要崩溃了。请各位帮帮忙
我的前台代码:
<div id="dd"></div> $(function () {
$('#dd').datagrid({
title: "测试 ",
width: "auto",
striped: true,
singleSelect: true,
loadMsg: "正在加载,请稍等...",
url: '/test/GetGridData', //获取数据地址
pagination: true,
rownumbers: true,
pageList: [5, 10, 15, 20],
pageSize: 10,
idField: "id",
columns: [[
{ title: "测试1", field: "productid", width: "180", align: "center" },
{ title: "测试2", field: "productname", width: "300", align: "center" },
{ title: "测试3", field: "city", width: "300", align: "center" }
]]
});
});
后台代码:
public JsonResult GetGridData(int rows, int page)
{
//result为json数据格式测试
string result = "";
result += "{\"total\":" + (rows *page)+ " ";
result += "rows:{[ ";
for (int i = 0; i <= rows; i++)
{
result += "{\"productid\":编号" + i + ",\"productname\":姓名" + i + ",\"city\":城市" + i + "\"}";
}
result += "]}"; JsonResult js = Json(result, JsonRequestBehavior.AllowGet);
return js;
}
我的前台代码:
<div id="dd"></div> $(function () {
$('#dd').datagrid({
title: "测试 ",
width: "auto",
striped: true,
singleSelect: true,
loadMsg: "正在加载,请稍等...",
url: '/test/GetGridData', //获取数据地址
pagination: true,
rownumbers: true,
pageList: [5, 10, 15, 20],
pageSize: 10,
idField: "id",
columns: [[
{ title: "测试1", field: "productid", width: "180", align: "center" },
{ title: "测试2", field: "productname", width: "300", align: "center" },
{ title: "测试3", field: "city", width: "300", align: "center" }
]]
});
});
后台代码:
public JsonResult GetGridData(int rows, int page)
{
//result为json数据格式测试
string result = "";
result += "{\"total\":" + (rows *page)+ " ";
result += "rows:{[ ";
for (int i = 0; i <= rows; i++)
{
result += "{\"productid\":编号" + i + ",\"productname\":姓名" + i + ",\"city\":城市" + i + "\"}";
}
result += "]}"; JsonResult js = Json(result, JsonRequestBehavior.AllowGet);
return js;
}
解决方案 »
- 紧急急急急----模式窗口中关闭子窗口是否会刷新父窗口?
- 求大侠给召----js读取文本文件自动填充到页面对应的文本框中==========
- JS在firefox下导出EXCEL或csv或其他格式文件
- 收藏夹__设为首页__JS代码如何实现呢
- 使用indexOf判断字符是否存在
- 能解决这个难题的人,我想肯定很牛!
- 两个不同系统间的页面刷新问题!
- 验证输入分数,得分分配的js封装 验证 大神快现身
- Option的用法
- newwin.window("wait.aspx","","height=100,width=100");中的wait.aspx的GIF图片不能显示
- kindeditor编辑器粘贴表格时把边框样式过滤掉了。在线等
- 在Servlet里面写的script语句在网页中直接就打印出来了。。求助!!
2.你可以判断下,是不是后台数据没有穿过去,或者,后台数据出错,你可以在前台,使用ajax,调用你的url,看看返回的data是什么(就是你return的那个js)
3.
这是我的后台GetGridData得到的数据,所以你的1和3是错误的,,至于你的第二点,我不知道在哪个地方alert这个数据出来
easyui datebox设置日期范围
easyui开发技巧
我后来发现,已经改过来了,可是还是没有数据。
result += "{\"total\":" + (rows * page) + " ,";
result += "\"rows\":{[ ";
for (int i = 0; i <= rows; i++)
{
//result += "{\"productid\":\"编号" + i + ",\"productname\":\"姓名" + i + ",\"city\":城市" + i + "\"}";
result += "{\"productid\":\"编号" + i + "\",\"productname\":\"姓名" + i + "\",\"city\":\"城市" + i + "\"}";
}
result += "]}";
我只是想自己拼接,做个测试,然后再从数据库里面调。如果我连基本的字符串都绑定不了,那调用数据库的不是更不能行吗
if(i!=0)
result += "{\"productid\":\"编号" + i + "\",\"productname\":\"姓名" + i + "\",\"city\":\"城市" + i + "\"},";
else
result += "{\"productid\":\"编号" + i + "\",\"productname\":\"姓名" + i + "\",\"city\":\"城市" + i + "\"}";
返回的内容:
{"total":10 ,"rows":[{"productid":"编号0","productname":"姓名0","city":"城市0"}{"productid":"编号1","productname":"姓名1","city":"城市1"}{"productid":"编号2","productname":"姓名2","city":"城市2"}{"productid":"编号3","productname":"姓名3","city":"城市3"}{"productid":"编号4","productname":"姓名4","city":"城市4"}{"productid":"编号5","productname":"姓名5","city":"城市5"}{"productid":"编号6","productname":"姓名6","city":"城市6"}{"productid":"编号7","productname":"姓名7","city":"城市7"}{"productid":"编号8","productname":"姓名8","city":"城市8"}{"productid":"编号9","productname":"姓名9","city":"城市9"}{"productid":"编号10","productname":"姓名10","city":"城市10"}]}
$.ajax({
beforeSend: function(xhr) {
xhr.setRequestHeader('Authorization', 'Bearer ' + $.session.get("token"));
},
url: _server + _url,
type: "post",
contentType: 'application/json;charset=utf-8',
dataType: "json",
data: JSON.stringify(_data),//这里是传递的数据,没有可以写null
success: function(data) {
console.log(data);//data就是后台传递过来的值
},
async: true,
error: function(er) {
alert('错误:' + JSON.stringify(er));
}
});
我是说在 $('#dd').datagrid({})里面怎么alert出得到的数据,,用这种方法我是已经alert出返回结果了的。。
这是我用另外一个方法,弹出的数据我后面加了“逗号”,,最后一个没加,,还是没有数据出来。。头疼啊
$.ajax({
beforeSend: function(xhr) {
xhr.setRequestHeader('Authorization', 'Bearer ' + $.session.get("token"));
},
url: url,
type: "post",
contentType: 'application/json;charset=utf-8',
dataType: "json",
data: null,//这里是传递的数据,没有可以写null
success: function(data) {
console.log(data);//data就是后台传递过来的值
$("#id").datagrid("loadData", $.parseJSON(data).rows);//给传递过来的data中加入一个字段,就是“page”:1
},
async: true,
error: function(er) {
alert('错误:' + JSON.stringify(er));
}
});
pagination: true,//分页栏显示
pageList: [10, 20, 30,40]//这两个要一起存在,不能单独使用,你说的点击每页显示条数不起作用,这个。。是不是测试数据太少了。。没遇到过。
我现在说的是下拉列表的点击,和上一页下一页那些按钮的那些点击事件,根本就没有走后台方法。又何来的传值是否正确呢
var page_json= {
pageSize: 10,//每页显示的记录条数,默认为10
pageList: [10,20,50],//可以设置每页记录条数的列表
displayMsg: '当前显示 {from} - {to} 条记录 共 {total} 条记录',
onSelectPage: function (pageNumber, pageSize) {
pageChange(pageNumber, pageSize);
},
layout: ['list', 'sep', 'first', 'prev', 'links', 'next', 'last', 'sep', 'refresh']
};
$(pid).datagrid('getPager').pagination(page_json);//初始化设置分页
});
function pageChange(index, size) {
//在后台分页,ajax重新获取数据,返回data
$(pid).datagrid('loadData', data);
}
说的很有道理。经过这一步一步的测试下来,我写的能出数据的方法是因为在前台ajax里面将数据进行了转换,所以easyUI表格出现了数据,如果我直接传出来,页面不出数据的原因,确实是数据格式有问题,因为js里面提示 那个rows为null,说明easyUI没有接收到可是我在后台里面用了json转对象的方法的,,,还是报这个错误。这是我写的后台方法
这里建议你检查一下你回传的数据中的key是否与数据行中的field匹配
如果数据一切都匹配,建议就在loadFilter 中做一次字符串转json的步骤在return出去试试
//过滤数据操作
return value;
}
分页真有那么难吗?把要返回的list分页,在通过gson转换下就好啦
1、easyui datagrid组件中的分页参数如果设置了显示,有默认参数,至于组件内数据有没有分页与这些参数的确有关系,但是别人做这个组件的人不是傻瓜,不会没意识到你漏加或者不加该参数造成的BUG的,默认参数我记得是5,10,15
2、在datagrid中使用url获取数据的方式,easyui会自动将一些分页需要的参数传给后台,可以在后台打印出来看看,easyui此处用的是ajax提交
3、如果使用外部传参的方式,分页函数要自己在调用easyui的分页组件,是比较麻烦的做法
4、datagrid有提供loadFilter的属性,可以在这个方法属性中得到后台返回后且还没有被grid加载的数据,这种方式也可以用来加工数据字段