我使用jqGrid 3.6.4和jquery 1.4.2.在我的示例中,我正在遵循json数据格式,我想将这些json数据映射到jqgrid的行中
{
"page": "1",
"total": 1,
"records": "6",
"rows": [
{
"head": {
"student_name": "Mr S. Jack ",
"year": 2007
},
"sub": [
{
"course_description": "Math ",
"date": "22-04-2010",
"number": 1,
"time_of_add": "2:00",
"day": "today"
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
我的jqgrid代码如下
jQuery("#"+subgrid_table_id).jqGrid({
url:"http://localhost/stud/beta/web/GetStud.php?sid="+sid,
dtatype: "json",
colNames: ['Stud Name','Year','Date'.'Number'],
colModel: [ {name:'Stud Name',index:'student_name', width:100, jsonmap:"student_name"},
{name:'Year',index:'year', width:100, jsonmap:"year"},
{name:'Date',index:'date', width:100, jsonmap:"date"},
{name:'Number',index:'number', width:100, jsonmap:"number"}
],
height:'100%',
jsonReader: { repeatitems : false, root:"head" },
});
Run Code Online (Sandbox Code Playgroud)
所以现在问题是我的数据,即student_name和year在"head"下,jqgrid可以找到这两个字段.同时其他两个列值,即日期和数字位于"子"下,甚至那些列我无法用jqgrid映射它
请帮助我如何在JQGrid中找到这些属性.
谢谢
我有一个ASP.NET MVC 3页面.在它上面,我有一个表,我使用来自ajax调用的JSON数据转换为jqGrid.网格具有以下设置:
myGrid = $('#myGrid');
myGrid.jqGrid({
caption: 'My Grid',
datatype: 'local',
data: data.rows,
height: 250,
pager: '#myPager',
viewrecords: true,
colModel: [
...,
{
label: 'blah',
name: 'blah',
align: 'left',
sortable: true,
editable: false,
width: 85,
formatter: 'date',
sorttype: 'date',
datefmt: 'm/d/Y',
formatoptions: { srcformat: 'm/d/Y', newformat: 'm/d/Y' }
},
...
]
});
// turn on filter toolbar
myGrid.filterToolbar();
Run Code Online (Sandbox Code Playgroud)
data.rows从ajax调用返回.除了一个以外,这种方式都有效.我可以对客户端进行分页,对客户端进行排序,并按照我显示colModel的字段进行搜索.这个'blah'字段是一个日期字段,它以mm/dd/yyyy格式正确显示日期.但是,当我在工具栏中键入类似11/17/2010的内容并按Enter键时,搜索将返回0条记录.
所以我深入研究了jqGrid代码,这是它在搜索之前生成的内容:
{"groupOp":"AND","rules":[{"field":"blah","op":"bw","data":"11/17/2010"}]}
Run Code Online (Sandbox Code Playgroud)
最终,当它遍历每一行并且它评估字段上的操作时,eval(m)&& p.push(this)行,m是这样的:
(String(this.blah).substr(0,10) == String("11/17/2010"))
Run Code Online (Sandbox Code Playgroud)
基本上,在我看来它并不认为该字段是一个日期.它调用parse而不是parseDate.任何人有任何想法如何解决这个问题?我知道搜索服务器端很容易,我可以传递该字符串,解析它,然后bam.但如果可以,我想留在客户方面.我能够在Oleg和Tom提出的一些样本中复制这个,所以这是一个问题,或者我在配置中遗漏了一些东西......
使用MVC2和EF框架.到目前为止,我发现的大多数参考/博客文章都涉及将单个表及其数据(有时是分层的)绑定到具有编辑功能的jqGrid.我不需要这个.我甚至不需要编辑数据 - 只需显示.我需要显示和分页数据.排序是一个加号,我猜想搜索奖金.
jqGrid的文档显示了绑定的数据源,如下所示:
return gridModel.OrdersGrid.DataBind(northWindModel.Orders);
Run Code Online (Sandbox Code Playgroud)
但是,我只有我的实体上下文而没有对视图模型的引用.我可以在这里创建一个实体集吗?对此不太熟悉.
我的所有视图模型都包含来自几个不同表的数据.如何将视图模型属性绑定到jqGrid?我玩Trirand的jqGrid的的30天试用版的MVC.同样,我只需要显示和分页数据,但我不确定如何将视图模型连接到jqGrid数据源.
public ActionResult test()
{
var gridModel = new testmodel();
var viewModel = gridModel.testgrid;
SetupTestGrid(viewModel);
return View(gridModel);
}
private void SetupTestGrid(JQGrid viewModel)
{
viewModel.ID = "TestGrid";
viewModel.DataUrl = Url.Action("SearchTestGridDataRequested");
viewModel.ToolBarSettings.ShowEditButton = false;
viewModel.ToolBarSettings.ShowAddButton = false;
viewModel.ToolBarSettings.ShowDeleteButton = false;
}
public JsonResult SearchTestGridDataRequested(string sidx, string sord, int page, int rows)
{
var gridModel = new testmodel(sidx, sord, page, rows);
SetupTestGrid(gridModel.testgrid);
return Json(gridModel.datasource);
}
Run Code Online (Sandbox Code Playgroud)
在testmodel和testmodel(参数)中,我创建了一个包含Phil Haack参数的匿名类型(名为datasource); 总计,页面,记录和行.在SearchTestGridDataRequested的最后一个语句中,此属性是JSON'ified.
我是jqGrid的新手,我发现很难按照文档jqGrid文档
在设置JQGrid时,我无法弄清楚如何调用WebMethod.我成功地进行了Ajax调用以获取数据,然后使用本地数据设置JQGrid.我认为这是设置过程中的一个额外步骤,我应该能够使用url属性提供webmethod的路径.
editurl属性是相同的方式.我从来没有真正收到邮件到服务器.
原始代码
尝试JQGrid设置
function GetData()
{
$('#list').jqGrid({
type: "POST",
url: "Default.aspx/GetUsersJSON",
datatype: "json",
height: 250,
colName: ['Username', 'Email'],
colModel: [
...
}).jqGrid(
'navGrid',
'#pager',
{
edit: true,
add: true,
del: true
});
}
Run Code Online (Sandbox Code Playgroud)
的WebMethod
[WebMethod]
public static string GetUsersJSON()
{
var users = new List();
using(UserAdministrationSandboxDataContext uasd = new UserAdministrationSandboxDataContext())
{
users = uasd.GetUserList();
}
JavaScriptSerializer serializer = new JavaScriptSerializer();
return serializer.Serialize(users);
}
Run Code Online (Sandbox Code Playgroud)
现行守则
我现在正常工作,但我还有一个最后的问题.为什么我必须设置'repeatitems:false'才能显示内容?
要使其工作的一些注意事项包括设置ajax请求的不同方法.
(Ajax:type)是(jqgrid:mtype)(Ajax:contentType)是(jqgrid:ajaxGridOptions:{contentType:})
最后,从文档中了解如何设置JSONReader的文档.
希望这有助于其他人并感谢Oleg的所有帮助.
JS
function GetUserDataFromServer()
{
$('#list').jqGrid({
url: "Default.aspx/GetUsersJSON",
mtype: …
Run Code Online (Sandbox Code Playgroud) jQuery.param({foo: 1}); // => "foo=1" - SUCCESS!
jQuery.param({bar: new Date()}); // => "" - OUCH!
Run Code Online (Sandbox Code Playgroud)
encodeURIComponent(new Date())没有问题,这是我认为param为每个成员调用的.
另外,明确使用"传统"参数(例如jQuery.param(xxx,true))是否序列化了日期,但是,由于我的数据结构不平坦,所以没有多大帮助.
这是因为typeof(Date)=="object"并且param尝试进入它以查找标量值?
如何真实地序列化一个碰巧在其中包含Date的对象$ .post()等?
我确信这很简单,我很遗憾,但我似乎无法找到它.我在这里指定了一个简单的jqGrid:
$('#mainGrid').jqGrid({
datatype: 'local',
colNames: ['id', 'name'],
colModel: [
{ name: 'id', index: 'id', width: 100 },
{ name: 'name', index: 'name', width: 300 }
],
rowNum: 9999,
sortname: 'name',
viewrecords: true,
sortorder: 'asc',
data: [{"id":"924c18a4-cad6-4b6a-97ef-f9ca61614530","name":"Pathway 1"},{"id":"54897f40-49ab-4abd-acac-6047006c7cc7","name":"Pathway 2"},{"id":"61542c48-102f-4d8e-ba9f-c24c64a20d28","name":"Pathway 3"},{"id":"c4ca9575-7353-4c18-b38a-33b383fcd8b2","name":"Pathway 4"}]
});
Run Code Online (Sandbox Code Playgroud)
这正确加载.简单的概念证明.现在我尝试通过调用服务器资源来替换本地数据:
$('#mainGrid').jqGrid({
url: 'AJAXHandler.aspx',
datatype: 'json',
colNames: ['id', 'name'],
colModel: [
{ name: 'id', index: 'id', width: 100 },
{ name: 'name', index: 'name', width: 300 }
],
rowNum: 9999,
sortname: 'name',
viewrecords: true,
sortorder: 'asc'
});
Run Code Online (Sandbox Code Playgroud)
服务器资源返回相同的数据.但是网格没有加载数据.(至少,它没有显示任何记录.)我已经确认FireBug确实正在调用资源并返回预期的数据.
起初我认为应该将资源响应中的内容类型更改为 …
我希望将jqGrid用于我正在处理的当前Web项目.问题是,我似乎无法通过网格显示JSON数据.这是网格的初始化代码:
$.fn.loadjqgrid = function(httpposturl){
$(this).jqGrid({
url: httpposturl,
datatype: "json",
mtype: "GET",
colNames: ["Video Title", "Description", "Date Taken", "Date Uploaded"],
colModel: [
{name:"videoTitle", index:"videoTitle", width:150},
{name:"videoDescription", index:"videoDescription", width:200},
{name:"dateTaken", index:"dateTaken", width:150, sortable:true},
{name:"dateUploaded", index:"dateUploaded", width:150, sortable:true}
],
pager: "#gridpager",
rowNum: 10,
viewrecords: true,
caption: "Video Grid"
});
};
Run Code Online (Sandbox Code Playgroud)
Java servlet返回的JSON:
[{"dateTaken":"Wed Feb 16 00:00:00 UTC 2011","videoDescription":"This is a test","videoTitle":"Test Video","dateUploaded":""}]
Run Code Online (Sandbox Code Playgroud)
JSON的格式化方式或网格初始化方式是否有问题?谢谢您的帮助!
我正在使用jqGrid,并希望能够使用其内置的编辑功能来进行添加/编辑/删除的ajax调用.我们的API使用RESTful动词和网址,如下所示:
verb url action
--------------------------------------------------------------
GET /api/widgets get all widgets (to populate grid)
POST /api/widgets create new widget
PUT /api/widgets/1 update widget 1
DELETE /api/widgets/1 delete widget 1
Run Code Online (Sandbox Code Playgroud)
是否可以使用带有这些限制的内置ajax处理,或者我是否必须使用本地数据(如此处和此处所述)并自行管理ajax调用?如果可能,我在网格上设置了哪些属性?
(ajaxRowOptions
看起来很有希望,但文档在如何使用它方面有点薄.)
jqgrid ×7
jquery ×4
json ×4
asp.net-mvc ×2
ajax ×1
asp.net ×1
data-binding ×1
javascript ×1
jqgrid-php ×1
jquery-ui ×1
linq ×1
rest ×1
subgrid ×1
webmethod ×1