JQgridのチェックボックスをオンにしようとすると、問題のない値が選択されます。テキストフィールドに値を入力せずにカスタムフォーマッタテキストフィールドがあり、チェックボックスを選択しようとすると、その後にアラートメッセージが表示されます。チェックボックスをオフにしますが、フォーカスがグリッドから削除されません。
スクリーンショットを添付しましたので、答えを教えてください。
コードはここに貼り付けられます:
jQuery("#list1").jqGrid({
url:actionurl,
mtype: 'POST',
colNames:['PartnerId', 'Employee No','Employee Name' ,'Position', 'Position Id', 'Wages','Relieve Date','Days Required'],
colModel:[
{name:'partnerId',index:'partnerId', width:280,sortable:true,search:false, hidden: true},
{name:'em_ka003_employeeno',index:'em_ka003_employeeno', width:200,sortable:true},
{name:'empname',index:'empname', width:280,sortable:false,search:false},
{name:'position',index:'position', width:250,sortable:false,search:false},
{name:'positionId',index:'positionId', width:0,sortable:false,search:false,hidden:true},
{name:'wages',index:'wages', width:100,sortable:false,search:false},
{name:'emp_relievedate',index:'emp_relievedate', width:200,sortable:false,search:false},
{name:'daysrequired',index:'daysrequired', width:140,sortable:false,search:false,formatter:createText},
],
rowNum:10,
rowList:[5,10,15],
pager: '#pager1',
sortorder: "asc",
sortname: 'em_ka003_employeeno',
viewrecords: true,
rownumbers: true,
loadonce: false,
forceFit: true,
datatype: 'xml',
multiselect: true ,
footerrow:true,
userDataOnFooter:true,
onSelectRow: function(rowId)
{
handleSelectedRow(rowId);
},
caption: "<b>Labor Extension",
gridComplete: function() {
$.unblockUI();
}
});
これは私のカスタムフォーマッター関数です:
function createText(el, cellval, opts)
{
return "<span><input class='dojoValidateValid required TextBox_OneCell_width number' type='text' id='days_req"+cellval.rowId+"' name='days_req"+cellval.rowId+"' onKeyPress='return checkIt(event,false)'/></span>";
}
function handleSelectedRow(id)
{
var jqgcell = jQuery('#list1').getCell(id, 'partnerId');
var daysrequired = jQuery("#days_req"+id+"").val();
var cbIsChecked = (jQuery("#jqg_list1_"+jqgcell).attr('checked'));
if(cbIsChecked==true)
{
/* Append the Days Required */
if(daysrequired=="")
{
alert("please enter the extension days");
jQuery("#days_req"+id+"").focus();
jQuery("#jqg_list1_"+jqgcell).attr('checked', false);
jQuery('#list1').restoreRow(id);
return false;
}
}
私は答えを得ました。
その時点でjqgridで特定の行を選択しているときにテキストフィールドの値がゼロの場合は、JavaScriptでそれを検証し、グリッドから選択した行のチェックを外します。
以下に貼り付けた作業コードは次のとおりです:
if(daysrequired=="0")
{
myGrid.jqGrid('resetSelection');
}
myGrid
は私のグリッドIDです。resetSelection
は、選択した行の選択を解除するjQGridのメソッドです。