初めてロードするときに、いくつかのパラメーター値をグリッドに追加する必要があります。
Grails アプリケーションがあります。
これは私のjqgridコードです:
$(document).ready(function() {
<jqgrid:grid
id="${TableName}"
onSelectRow="onSelectRow"
onSortCol="onSortColumn"
sortable="true"
multipleSearch="'true'"
multipleGroup="'true'"
url="'${createLink(controller: 'sample', action: 'listAll', params: [ticketId: params.ticketId])}'"
colNames='${pageMap.sample.colNames}'
colModel='${pageMap.sample.colModel}'
resizable="true"
sortname="'id'"
height="'auto'"
autowidth="true"
scrollOffset="16"
viewrecords="true"
forceFit="true"
shrinkToFit="false"
beforeRequest="hideNavSelector"
gridComplete="updateLocationOfNavIcons"
showPager="false"
rowList="20,30,40,50,60,70,80,90,100"
rowNum="${pageMap.sample.recordsToShow }"
loadError ="loadError"
loadonce="'true'"
loadComplete="loadComplete"
beforeProcessing="checkSampleResults"
datatype="'json'">
<jqgrid:navigation id="${TableName}" refresh="true"/>
<jqgrid:resize id="${TableName}" resizeOffset="-2" />
</jqgrid:grid>
});
これは既存のコードです。fromDate, toDate
しかし、初めてロードするときに、いくつかのフィールド ( ) を params に追加する必要があります。
追加する必要があるパラメーターは次のとおりです。
var from_year = $('#fromDate_year').val().trim();
var from_month = $('#fromDate_month').val().trim();
var from_day = $('#fromDate_day').val().trim();
var to_year = $('#toDate_year').val().trim();
var to_month = $('#toDate_month').val().trim();
var to_day = $('#toDate_day').val().trim();
私は既存のjqgrid(上記のコード)に次のように追加しようとしました:
postData = "{
ticketId:params.ticketId,
from_year:$('#fromDate_year').val().trim(),
from_month:$('#fromDate_month').val().trim(),
from_day:$('#fromDate_day').val().trim(),
to_year:$('#toDate_year').val().trim(),
to_month:$('#toDate_month').val().trim(),
to_day:$('#toDate_day').val().trim()
}"
しかし、それは機能していません。
jqgrid の URL 属性を追加しようとしましたが、それも機能しません:
コードは
url="'${createLink(controller: 'sample', action: 'listAll', params: [ticketId: params.ticketId,from_year:$('#fromDate_year').val().trim()])}'"
メソッドを作成し、jqgrid に追加しました。動作しますが、毎回呼び出されます。それは必要ありません。そのため、グリッドの既存の動作が悪くなりました。
コードは次のとおりです。
jqgridで:
beforeRequest="beforeRequest"
JavaScriptで
function beforeRequest() {
hideNavSelector();
var from_year = $('#fromDate_year').val().trim();
var from_month = $('#fromDate_month').val().trim();
var from_day = $('#fromDate_day').val().trim();
var to_year = $('#toDate_year').val().trim();
var to_month = $('#toDate_month').val().trim();
var to_day = $('#toDate_day').val().trim();
var param_list = {
ticketId:ticketId,
from_year:from_year,
from_month:from_month,
from_day:from_day,
to_year:to_year,
to_month:to_month,
to_day:to_day
};
var grid = $('#${defaultTableName}Grid');
grid.jqGrid("clearGridData", true)
grid.jqGrid('setGridParam',{postData: null});
grid.jqGrid('setGridParam',{datatype:'json',url:'${createLink(controller: 'ticket', action: 'listAllDefaultTable')}',postData:param_list});
}