関数に関しては、jqGrid 4.3.1のドキュメントとソースコードを調べていましたが、HTMLテーブルレイアウトから構築されているため、オブジェクトに含まれている場合はとが無視されるtableToGrid()
ことがわかりました。ColModel
ColNames
options
私の質問は、特にテーブルの列が事前にわかっている場合、HTMLテーブルからそれらを構築するのではなく、tableToGrid()
これらの2つの配列を強制的に受け入れる方法があります。(ColModel,ColNames)
コードを調べたところ、次のコードでこの部分が見つかりました。TableToGrid
function tableToGrid(selector, options) {
...
...
// Build up the columnModel and the data
var colModel = [];
var colNames = [];
jQuery('th', jQuery(this)).each(function() {
if (colModel.length === 0 && selectable) {
colModel.push({
name: '__selection__',
index: '__selection__',
width: 0,
hidden: true
});
colNames.push('__selection__');
} else {
colModel.push({
name: jQuery(this).attr("id") || jQuery.trim(jQuery.jgrid.stripHtml(jQuery(this).html())).split(' ').join('_'),
index: jQuery(this).attr("id") || jQuery.trim(jQuery.jgrid.stripHtml(jQuery(this).html())).split(' ').join('_'),
width: jQuery(this).width() || 150
});
colNames.push(jQuery(this).html());
}
});
しかし、私のハックはこれらの変更を考慮します
function tableToGrid(selector, options) {
...
...
// Build up the columnModel and the data
if(options.hasOwnProperty("colModel") && options.hasOwnProperty("colNames")) {
var colModel = options.colModel;
var colNames = options.colNames;
} else {
var colModel = [];
var colNames = [];
jQuery('th', jQuery(this)).each(function() {
if (colModel.length === 0 && selectable) {
colModel.push({
name: '__selection__',
index: '__selection__',
width: 0,
hidden: true
});
colNames.push('__selection__');
} else {
colModel.push({
name: jQuery(this).attr("id") || jQuery.trim(jQuery.jgrid.stripHtml(jQuery(this).html())).split(' ').join('_'),
index: jQuery(this).attr("id") || jQuery.trim(jQuery.jgrid.stripHtml(jQuery(this).html())).split(' ').join('_'),
width: jQuery(this).width() || 150
});
colNames.push(jQuery(this).html());
}
});
}
ソースコードを調整する必要なしにそのような振る舞いを強制するより簡単な方法(私が逃したオプションかもしれません)があるかどうかを知りたいだけです。
私が最初にこれを行っている理由は、一部のフィールドのオプションを強制するdatefmt
ためです。これらのフィールドはjQgridによって無視され、検索機能で問題が発生するためです。@Olegがこれについて何らかの洞察を与えることができれば、それは高く評価されます。
乾杯、N。