所以我浪費了一整天的時間追蹤數據,但無法找到解決方案,因此張貼在這裏。 以下是我的js的代碼。jQgrid下拉菜單不填充表格中的數據編輯
<script type="text/javascript">
jq(function() {
jq("#Grid").jqGrid({
url:'/indyaah/crud.htm',
datatype: 'json',
mtype: 'GET',
colNames:['User Id','User Name','Book Id','Book Name'],
colModel:[
{name:'userId',index:'userId', formatter: 'select', stype: 'select',edittype: 'select',editoptions:{value:Users()},editable:true, editrules:{required:true,edithidden:true},searchoptions:{sopt: ['eq','ne','le','ge']},hidden:true},
{name:'userName',index:'userName', width:100,editable:false},
{name:'bookId',index:'bookId', formatter: 'select', stype: 'select',edittype: 'select',editoptions:{value:Books()},editable:true, editrules:{required:true,edithidden:true},searchoptions:{sopt: ['eq','ne','le','ge']},hidden:true},
{name:'BookName',index:'BookName', width:100},
],
postData: {
},
rowNum:5,
altRows:true,
hiddengrid:true,
rowList:[5,10],
height: "100%",
autowidth: true,
rownumbers: true,
pager: '#pager',
sortname: 'userId',
viewrecords: true,
sortorder: "asc",
caption:"Details",
emptyrecords: "Empty records",
loadonce: false,
autowidth:true,
loadComplete: function() {
},
jsonReader : {
root: "rows",
page: "page",
total: "total",
records: "records",
repeatitems: false,
cell: "cell",
id: "id"
}
});
function Users()
{
jq.getJSON('/indyaah/readUsers.htm', function(data) {
var len = data.rows.length;
for (var i = 0; i < len; i++) {
if(i===0) html += '' + data.rows[i].userId + ' : \'' + data.rows[i].userName + '\',' ;
else if(i===len-1) html += data.rows[i].userId + ' : \'' + data.rows[i].userName + '\'' ;
else html += data.rows[i].userId + ' : \'' + data.rows[i].userName + '\',' ;
}
});
return html;
}
function Books()
{
jq.getJSON('/indyaah/readBooks.htm', function(data) {
var len = data.rows.length;
for (var i = 0; i < len; i++) {
if(i===0) html += '{\'' + data.rows[i].bookId + '\':\'' + data.rows[i].name + '\',\n' ;
else if(i===len-1) html += '\''+ data.rows[i].bookId + '\':\'' + data.rows[i].name + '\'}' ;
else html += '\''+ data.rows[i].bookId + '\':\'' + data.rows[i].name + '\',\n' ;
}
});
return html;
}
jq("#Grid").jqGrid('navGrid','#pager',
{edit:false,add:false,del:false,search:true},
{ },
{ },
{ },
{
sopt:['eq', 'ne', 'le', 'ge', 'cn', 'bw', 'ew'],
closeOnEscape: true,
multipleSearch: true,
closeAfterSearch: true },
{width:500}
);
jq("#Grid").navButtonAdd('#pager',
{ caption:"Add",
buttonicon:"ui-icon-plus",
onClickButton: add,
position: "last",
title:"",
cursor: "pointer"
}
);
jq("#Grid").navButtonAdd('#pager',
{ caption:"Edit",
buttonicon:"ui-icon-pencil",
onClickButton: edit,
position: "last",
title:"",
cursor: "pointer"
}
);
jq("#Grid").navButtonAdd('#pager',
{ caption:"Delete",
buttonicon:"ui-icon-trash",
onClickButton: delete,
position: "last",
title:"",
cursor: "pointer"
}
);
jq("#btnFilter").click(function(){
jq("#Grid").jqGrid('searchGrid',
{multipleSearch: true,
sopt:['eq']}
);
});
jq("#Grid").jqGrid('filterToolbar',{stringResult: true,searchOnEnter : true, defaultSearch:"cn"});
});
</script>
兩個Jsons具有以下格式(我已經表明只有3-4列,但分別有8和10),
{
page: 1
records: 5
rows: [
0: {displayName:ABC, password:null, userName:123, userId:1,…}
1: {displayName:DEF, password:null, userName:456, userId:2,…}
2: {displayName:GHI, password:null, userName:789, userId:3,…}
3: {displayName:JKL, password:null, userName:234, userId:4,…}
4: {displayName:MNO, password:null, userName:548, userId:5,…}
5: {displayName:PQR, password:null, userName:968, userId:6,…}
]
}
和
{
page: 1
records: 5
rows: [
0: {displayName:ABC, bookName:123, bookId:1,…}
1: {displayName:DEF, bookName:456, bookId:2,…}
2: {displayName:GHI, bookName:789, bookId:3,…}
3: {displayName:JKL, bookName:234, bookId:4,…}
4: {displayName:MNO, bookName:548, bookId:5,…}
5: {displayName:PQR, bookName:968, bookId:6,…}
]
}
我的編輯/添加表單看起來像 請注意,在編輯/添加中,我只使用服務器在Json中發送的一些值。
所以基本上問題是,網格加載完美,但只要我嘗試添加或編輯, 選擇框是空的。 當我在firebug中調試時,控制器發送數據,但它沒有加載到網格中。
那麼,我在這裏失蹤?
你是男人的哥們...... 我的意思是每一個jqGrid的問題(可能以後小bug修復。)我已經看到,你在那裏與TO THE POINT的答案和完美的描述。 感謝這一個太,我會讓你知道我什麼時候測試.. **尊重** – 2012-03-06 06:03:36
@indyaah:不客氣!感謝關於我的好話! – Oleg 2012-03-06 06:05:45
我測試了代碼,它將完整的html對象作爲單下拉選項而不是單獨的選項返回。 即:當我編輯它在下拉菜單中給出一個選項,看起來像1:'abc',2:'def',... – 2012-03-07 16:13:51