我有点迷失了。我尝试实现一个基于 JqGrid 的解决方案,并尝试使用函数作为数据类型。我猜我已经按照书本设置了所有内容,我调用了 WS 并返回了 JSON,我在 ajax 调用中在客户端取得了成功,并且我使用 addJSONData
“绑定(bind)”jqGrid,但网格仍然为空。我现在没有任何线索...同一页面上的其他“本地”示例可以正常工作(jsonstring ...)
我的 WS 方法如下所示:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetGridData()
{
// Load a list
InitSessionVariables();
SA.DB.DenarnaEnota.DenarnaEnotaDB db = new SAOP.SA.DB.DenarnaEnota.DenarnaEnotaDB();
DataSet ds = db.GetLookupForDenarnaEnota(SAOP.FW.DB.RecordStatus.All);
// Turn into HTML friendly format
GetGridData summaryList = new GetGridData();
summaryList.page = "1";
summaryList.total = "10";
summaryList.records = "160";
int i = 0;
foreach (DataRow dr in ds.Tables[0].Rows)
{
GridRows row = new GridRows();
row.id = dr["DenarnaEnotaID"].ToString();
row.cell = "[" + "\"" + dr["DenarnaEnotaID"].ToString() + "\""
+ "," + "\"" + dr["Kratica"].ToString() + "\""
+ "," + "\"" + dr["Naziv"].ToString() + "\""
+ "," + "\"" + dr["Sifra"].ToString() + "\""
+ "]";
summaryList.rows.Add(row);
}
return JsonConvert.SerializeObject(summaryList);
}
我的 ASCX 代码是这样的:
jQuery(document).ready(function() {
jQuery("#list").jqGrid({
datatype: function(postdata) {
jQuery.ajax({
url: '../../AjaxWS/TemeljnicaEdit.asmx/GetGridData',
data: '{}',
dataType: 'json',
type: 'POST',
contentType: "application/json; charset=utf-8",
complete: function(jsondata, stat) {
if (stat == "success") {
var clearJson = jsondata.responseText;
var thegrid = jQuery("#list")[0];
var myjsongrid = eval('(' + clearJson + ')');
alfs
thegrid.addJSONData(myjsongrid.replace(/\\/g, ''));
}
}
});
},
colNames: ['DenarnaEnotaID', 'Kratica', 'Sifra', 'Naziv'],
colModel: [{
name: 'DenarnaEnotaID',
index: 'DenarnaEnotaID',
width: 100
},
{
name: 'Kratica',
index: 'Kratica',
width: 100
},
{
name: 'Sifra',
index: 'Sifra',
width: 100
},
{
name: 'Naziv',
index: 'Naziv',
width: 100
}
],
rowNum: 15,
rowList: [15, 30, 100],
pager: jQuery('#pager'),
sortname: 'id',
// loadtext:"Nalagam zapise...",
// viewrecords: true,
sortorder: "desc",
// caption:"Vrstice",
// width:"800",
imgpath: "../Scripts/JGrid/themes/basic/images"
});
});
从 WS 我得到这样的 JSON:
{”page”:”1″,”total”:”10″,”records”:”160″,”rows”:[{"id":"18","cell":"["18","BAM","Konvertibilna marka","977"]“},{”id”:”19″,”cell”:”["19","RSD","Srbski dinar","941"]“},{”id”:”20″,”cell”:”["20","AFN","Afgani","971"]“},{”id”:”21″,”cell”:”["21","ALL","Lek","008"]“},{”id”:”22″,”cell”:”["22","DZD","Alžirski dinar","012"]“},{”id”:”23″,”cell”:”["23","AOA","Kvanza","973"]“},{”id”:”24″,”cell”:”["24","XCD","Vzhodnokaribski dolar","951"]“},{”id”:”25″,”cell”:”
………………
["13","PLN","Poljski zlot","985"]“},{”id”:”14″,”cell”:”["14","SEK","Švedska krona","752"]“},{”id”:”15″,”cell”:”["15","SKK","Slovaška krona","703"]“},{”id”:”16″,”cell”:”["16","USD","Ameriški dolar","840"]“},{”id”:”17″,”cell”:”["17","XXX","Nobena valuta","000"]“},{”id”:”1″,”cell”:”["1","SIT","Slovenski tolar","705"]“}]}
我已经注册了这个 JavaScript:
clientSideScripts.RegisterClientScriptFile("prototype.js", CommonFunctions.FixupUrlWithoutSessionID("~/WebUI/Scripts/prototype-1.6.0.2.js"));
clientSideScripts.RegisterClientScriptFile("jquery.js", CommonFunctions.FixupUrlWithoutSessionID("~/WebUI/Scripts/JGrid/jquery.js"));
clientSideScripts.RegisterClientScriptFile("jquery.jqGrid.js", CommonFunctions.FixupUrlWithoutSessionID("~/WebUI/Scripts/JGrid/jquery.jqGrid.js"));
clientSideScripts.RegisterClientScriptFile("jqModal.js", CommonFunctions.FixupUrlWithoutSessionID("~/WebUI/Scripts/JGrid/js/jqModal.js"));
clientSideScripts.RegisterClientScriptFile("jqDnR.js", CommonFunctions.FixupUrlWithoutSessionID("~/WebUI/Scripts/JGrid/js/jqDnR.js"));
基本上我认为这一定是愚蠢的事情......但我现在无法弄清楚......
最佳答案
过去几个小时我一直在尝试解决同样的问题。我现在已经放弃了让 AddJSONData 工作 - 我的 Web 服务方法正在返回一个数组,因此看起来使用 addRowData 可以工作。
function ReceivedClientData(data) {
var thegrid = $("#list4");
for (var i = 0; i < data.length; i++) {
thegrid.addRowData(i+1, data[i]);
}
}
关于asp.net - JqGrid addJSONData + ASP.NET 2.0 WS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/545714/