JqG​​rid - 在gridComplete上以编程方式更改列标题文本时失去排序和执行multipleSearch的能力

时间:2011-03-05 06:52:20

标签: search sorting jqgrid

这是我的jqgrid - $("#list1") 当它加载时,即在gridComplete事件上,我需要重命名列标题文本。

原始列标题文本采用此格式 - Colomn1,Column2 ... 在gridComplete,我更改这些标题文本:

$("#list1_Column" + someNumber).text(someText);

然而,在这样做时,我失去了对列进行排序的能力。列标题不再可单击,因此在自定义编程编辑后无法对网格进行排序。

当我尝试更改搜索下拉列表中的文本时会发生类似的事情(搜索模式 - 使用multipleSearch:true)

在gridComplete上,我根据网格列标题更改选择列表中的文本值,如下所示 -

var select = $('#grid_wrapper #fbox_list1 .ui-widget-content .sf .fields select');
$('#grid_wrapper #fbox_list1 .ui-widget-content .sf .fields select option').remove();

$.each(data, function (i, item) {
     select.append('<option value="Column' + item.id + '">' + item.ColumnName + '</option>')
});

...我无法执行多次搜索,即搜索模式中的+和 - 按钮消失。

如何解决这两个问题?保留在加载时更改列标题和搜索列表文本值后对排序和执行多次搜索的能力。

请指导。

1 个答案:

答案 0 :(得分:2)

列标题<th>元素有两个子元素:一个<span>包含列标题文本,另一个包含排序图标,隐藏时间最多。因此,如果您想手动更改文本,则应使用其他选择器

$("#list1_Column" + someNumber+ " > span").text(someText);

如果您这样做,您将更改页面上的文字,但不会更改 colNamescolModel中的文字(如果您使用{{1} }而不是label)。该文本将用于创建Multisearch对话框。您可以使用setColProp方法对colNames进行更改,或使用getGridParam来引用jqGrid的任何内部参数(这些对象就像包含{ {1}}和colModel)然后进行所需的任何更改。

我认为解决所述问题的最佳方法是使用setLabel方法更改列标题中的文字:

colNames

这将解决这两个问题。