я собирался через документацию и исходный код jqGrid 4.3.1, когда речь идет для функции tableToGrid()
и я обнаружил, что ColModel
и ColNames
игнорируются при включении в options
объект, поскольку они построены из макета таблицы HTML.jQgrid tableToGrid() игнорирует colModel и COLNAMES в вариантах
Мой вопрос: есть ли способ заставить tableToGrid()
принять эти два массива (ColModel,ColNames)
, а не конструировать их из таблицы HTML, особенно если столбцы таблицы известны заранее.
Когда я прошел через код, я нашел эту часть в коде для 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 может дать некоторое представление об этом, он будет высоко оценен.
Приветствия, Н.
[Что вы имеете в виду именно с 'colModel' и' colNames' игнорируются?] (Http://jsfiddle.net/darkajax/4esFf/) – DarkAjax
Они не учитываются при построении jqGrid из существующей таблицы HTML , – nawar