我正在查看jqGrid 4.3.1的文档和源代码,当涉及tableToGrid()
函数时,我发现ColModel
和ColNames
被包含在options
对象,因为它们是从HTML表格布局构造的。
我的问题是有一种方法可以强制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可以对此有所了解,我们将非常感激。
干杯,N。
答案 0 :(得分:0)
我认为你的问题主要在于你使用tableToGrid
。我发现有关常见用法或架构的问题是技术问题。
如果你有输入数据,如数字,日期,货币等,你可能希望通过jqGrid对数据进行正确排序。从HTML表中解析本地化数据和取消格式化数据不是最好的方法。如果要直接创建jqGrid ,可以节省时间。您应该在data
参数中提供输入数据。在这种方式下,数据将易于安全地读取,排序和分页。您可以轻松地包括工具栏过滤或高级搜索或其他一些过滤搜索。只有在您提供jqGrid 纯数据时才能完成所有工作。
有关详细信息,请参阅the answer。