I´m using CodeIgniter with jquery grid.
I have an Index in my DB that states that some combination can´t be inserted.
UNIQUE KEY user_store_index
(Stores_idStores
,Users_idUsers
). The combination of a user and a Store can´t be inserted twice.
Using firebux I can see the error
A Database Error Occurred
Error Number: 1062. Duplicate entry '1-5' for key 'user_store_index'
INSERT INTO asignedto
(Stores_idStores
, Users_idUsers
) VALUES ('1', '5').
In this case I would like to show to the user in the jqGrid the following message: "You can´t insert this combination because it already exists" but all I got is "error Status: 'error'. Error code: 500". I have read the explanation presented here jqgrid server side error message/validation handling and here jqgrid server exception error messages and many others but I haven´t been able to find the solution.
Here is the code of my jqGrid
$(document).ready(function() {
var grid = jQuery("#newapi_1351802691").jqGrid({
ajaxGridOptions : {type:"POST"},
jsonReader : {
root:"data",
repeatitems: false
},
loadError : function(xhr,status,error) {
alert(xhr.status+','+status+','+error); //alert 500, error, My custom error
},
rowList:[10,20,30],
viewrecords: true
,url:'http://localhost/sp/index.php/assigment/getData'
,editurl:'http://localhost/sp/index.php/assigment/setData'
,datatype:'json'
,rowNum:'12'
,width:'800'
,height:'300'
,pager: '#pnewapi_1351802691'
,caption:'Control de asignaciones'
,colModel:[
{name:'username',index:'username',label:'Usuario' ,align:'left',width:300,editable:false,edittype:'text',editrules:{required:true} }
,{name:'StoreName',index:'StoreName',label:'Tienda' ,align:'center',width:200,editable:false,edittype:'text',editrules:{required:true} }
,{name:'Users_idUsers',index:'Users_idUsers',label:'Usuario' ,align:'center',width:100,hidden:true,editable:true,edittype:'select',editoptions:{value:":Select;5:tienda1;6:tienda2;17:tienda3;18:tienda11",size:10},editrules:{edithidden:true,required:true,integer:true} }
,{name:'Stores_idStores',index:'Stores_idStores',label:'Tienda' ,align:'center',width:100,hidden:true,editable:true,edittype:'select',editoptions:{value:":Select;1:EA001;3:EA003;4:EA005;5:EA006;6:EA007;7:EA008;8:EA009;9:EA010;10:EA011;11:EA012;12:EA013;13:EA015;14:EA017;15:EA018;16:EA019;17:EA020;18:EA021;19:EA022;20:EA002;21:EA000",size:10},editrules:{edithidden:true,required:true,integer:true} }
,{name:'SurrugateTurn',index:'SurrugateTurn',label:'SurrugateTurn' ,align:'center',width:100,key:true,hidden:true,editable:true,edittype:'select',editoptions:{value:":Select;1:1;19:19",size:10},editrules:{hidden:true} }
] })
jQuery("#newapi_1351802691")
.jqGrid('navGrid',
'#pnewapi_1351802691',
{view:false,
edit:'1',
add:'1',
del:'1',
close:true,
delfunc: null ,
search:''
},
{ recreateForm: true,
width : 400 ,
beforeShowForm : function(form) {
},
closeAfterEdit:true }, // edit options
{ recreateForm: true,
width : 400,
closeAfterAdd : true,
beforeSubmit : function(postdata, formid) {
var mensaje = '';
var resultado = true;
return[resultado,mensaje];
}
}, /*add options*/
{mtype: 'POST'} /*delete options*/,
{sopt: ['eq','cn','ge','le' ] ,
multipleSearch: false ,
showOnLoad : false,
overlay:false,mtype: 'POST'} /*search options*/
).navButtonAdd('#pnewapi_1351802691',
{ caption:'', buttonicon:'ui-icon-extlink', onClickButton:dtgOpenExportdata, position: 'last', title:'Export data', cursor: 'pointer'}
);
;
});
Could you please help me with this...