I have select box in jqGrid and to load data m using dataUrl. Everything is working fine but when I put multiple as true then data is not getting displayed in the grid but in the console its printing the data. Googled a lot but couldn’t find solution.
$(document).ready(function () {
var lastsel;
var skip = 0;
jQuery("#list").jqGrid({
url: 'SomeActionClass.do?option=LOAD',
datatype: "json",
colNames: [],
colModel: [
{ name: 'generalised_skill_id', index: 'generalised_skill_id',
width: 120, formoptions: { rowpos: 2, colpos: 1 },
editable: true, edittype: "select",
editoptions: {
dataEvents: [
{
type: 'change',
fn: function (e) {
var Value = $(this).val();
if (Value == "CreateNew") {
addSkill(Value);
}
}
}],
dataUrl: 'PopulatePrimarySkillData.do?nd=' + Math.random()
}
},
{ name: 'primary_skill_ids', index: 'primary_skill_ids', width: 120,
formoptions: { rowpos: 2, colpos: 2 },
editable: true, editrules: { required: true }, edittype: "select",
editoptions: {
dataEvents: [
{
type: 'change',
fn: function (e) {
var Value = $(this).val();
if (Value == "CreateNew") {
addSkill(Value);
}
}
}],
value: "", multiple: true, size: 3,
dataUrl: 'PopulatePrimarySkillData.do?nd=' + Math.random()
}
},
],
rowNum: 25,
rowList: [25, 50, 75, 100],
pager: '#pager',
rowTotal: 10000,
sortname: 'rgs_id',
viewrecords: true,
height: 600,
sortorder: "asc",
multiselect: true,
mtype: "POST",
gridview: true,
ignoreCase: true,
loadonce: true,
loadComplete: function () {
$('#list').setGridParam({ datatype: "json" });
$('#list').trigger("filterToolbar");
$('#list').trigger("reloadGrid");
},
ondblClickRow: function (id) {
if (id && id !== lastsel) {
data = jQuery('#list').getRowData(id);
var str = data['status'];
if (str == "Fulfilled" || str == "Canceled") {
alert('Fulfilled and Cancelled demands can not be edited');
} else {
jQuery('#list').jqGrid('restoreRow', lastsel);
jQuery('#list').jqGrid('editRow', id, true, pickdates);
lastsel = id;
}
}
},
editurl: 'SomeActionClass.do?option=EDITorADD'
});
});
For generalised skill its loading the select box but for primary skill its not loading anything. However if I remove multiple:true from primary skill then its loading the data.
Any help would be greatly appreciated.
Following is my PopulatePrimarySkillData class.
// In this function query to fetch all the skills from database is written.
ArrayList primarySkillList = fetchPrimarySkills();
StringBuilder htmlSelectString = new StringBuilder("<select> ");
for (int i = 0; i < primarySkillList.size(); i++) {
SkillsetBean sb = (SkillsetBean) primarySkillList.get(i);
htmlSelectString.append("<option value='");
htmlSelectString.append(sb.getPrimarySkillId());
htmlSelectString.append("'>");
htmlSelectString.append(sb.getPrimarySkillDesc());
htmlSelectString.append("</option>");
}
htmlSelectString
.append("<option value='CreateNew'>Create New</option> ");
htmlSelectString.append("</select> ");
PrintWriter out = response.getWriter();
System.out.println("The SELECT String is : "
+ htmlSelectString.toString());
out.println(htmlSelectString.toString());
return null;
This Function prints following result in the console.
<select> <option value='1'>.Net</option>
<option value='2'>Appl packaging</option>
<option value='3'>BOXI</option>
<option value='4'>Business Analyst</option>
<option value='5'>C++</option>
<option value='6'>CNG</option>
<option value='7'>DB2</option>
<option value='8'>Flash</option>
<option value='9'>IIS Admin</option>
<option value='10'>Informatica</option>
<option value='11'>Java / J2EE</option>
<option value='12'>Java Flex</option>
<option value='13'>MS Access</option>
<option value='14'>Mainframe</option>
<option value='15'>NAT/ADABAS</option>
<option value='16'>Oracle</option>
<option value='17'>Oracle DBA</option>
<option value='18'>Others</option>
</select>
I think on server side there is no problem cause when I remove “multiple:true” data is getting loaded.
Here is the sample JSON data. I hope this is helpfull.
{"id":"166","cell":["Business Analyst","BOXI,C++"]}
{"id":"167","cell":["C++",".Net,C++"]}
{"id":"168","cell":[".Net",".Net,CNG"]}
{"id":"169","cell":["Business Analyst","Appl packaging,Business Analyst"]}
{"id":"170","cell":["Business Analyst,C++","CICS,Cobol"]}
{"id":"171","cell":[,"Appl packaging",".Net,Business Analyst"]}
{"id":"172","cell":["CNG","BOXI,Appl packaging"]}
{"id":"173","cell":["Business Analyst","Business Analyst,BOXI"]}
You have a part of problems (jqGrid bugs) which I described in the answer and which I posted as the bug report to the developer of jqGrid. The bugs are still not fixed so you my attempts to reproduces your problem in Internet Explorer the demo:
I used IE9 for the test. If you fix the line 8217 of the
jquery.jqGrid.src.js(version 4.1.2) fromto
the problem will be fixed and you will have
(See the same demo, but which use the fixed
jquery.jqGrid.src.js).Moreover I wrote you in the comment that the attempt generate unique URL used in
dataUrlwithgenerate one url like
If you would use
dataUrl: 'PopulatePrimarySkillData.doand will use additional parameterajaxSelectOptions: { cache: false }thedataUrlwhich will be used will be really unique like