JqGrid - потеря способности сортировать и выполнять множественный поиск при программном изменении текста заголовка столбца в gridComplete - PullRequest
0 голосов
/ 05 марта 2011

Это мой jqgrid - $("#list1") Когда он загружается, то есть для события gridComplete, мне нужно переименовать текст заголовка столбца.

Исходные тексты заголовка столбца в этом формате - Colomn1, Column2... На gridComplete я изменяю эти тексты заголовков следующим образом:

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

Однако при этом я теряю способность сортировать столбцы.Заголовки столбцов больше не доступны для щелчка мышью, и поэтому я не могу отсортировать сетку после этого пользовательского программного редактирования.

Аналогичная ситуация происходит, когда я пытаюсь изменить тексты в раскрывающемся списке поиска (модальный поиск - используя множественный поиск: 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 Ответ

2 голосов
/ 05 марта 2011

Заголовок столбца <th> элемент имеет два дочерних элемента: один <span> с текстом заголовка столбца и другой с иконками сортировки, которые скрыты чаще всего.Поэтому, если вы хотите изменить текст вручную, вы должны использовать другой селектор

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

. Если вы сделаете это, вы измените текст на странице, но не изменит текст в colNames или в colModel (если вы используете label вместо colNames).Текст будет использоваться, например, для создания диалогового окна Multisearch.Вы можете внести изменения в colModel в отношении метода setColProp или использовать getGridParam , чтобы получить ссылку на любой внутренний параметр jqGrid (которые являются объектами наподобие включающихcolNames и colModel), а затем внесите любые необходимые изменения.

На мой взгляд, лучший способ решить описанные проблемы - использовать метод setLabel для изменения текста взаголовок столбца:

$("#list1").jqGrid('setLabel','ColumnName','My new Name');

это решит обе проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...