Получить значение на стороне клиента ячейки сетки, содержащей <select> - PullRequest
0 голосов
/ 02 июля 2010

Я пытаюсь написать функцию jquery, которая сканирует весь jqrid, чтобы проверить, имеет ли какая-либо из его ячеек значение.

Проблема, с которой я столкнулся, заключается в том, что, похоже, нет способа извлечь выбранное значение ячейки, содержащей поле выбора. В jqgrid docs четко указано следующее для методов getCell и getRowData.

Не используйте этот метод, когда вы редактирование строки или ячейки. Это будет вернуть содержимое ячейки, а не Фактическое значение элемента ввода

Что достаточно справедливо, но, учитывая это, как мне получить значение?

Невозможно проанализировать HTML-код, возвращаемый из выбранного содержимого, так как ни один из параметров не помечен как выбранный, даже если они отображаются выбранными в браузере.

Для справки приведен фрагмент моего кода:

var colModels = this.grid.jqGrid('getGridParam', 'colModel');
for (i = 1; i < colModels.length; i++) {
            var colModel = colModels[i];
            if (colModel.edittype == 'select') {
                var colData = this.grid.jqGrid('getCol', colModel.name, false);
                for (j = 0; j < colData.length; j++) {
                    if (colData[j] != 0) {
                        //alert("select change: " + colData[j]);
                        //alert(j+' GridName_' + colModel.name)
                        //alert("select change: " + $('#GridName_' + colModel.name).val());
                        //return has value?;
                    } 
                }
            }
        }

Определение столбца:

{ name: "AppleId", index: "Appled", width: 150, align: "left", resizable: false, editable: true, edittype: "select", editoptions: { value: function() { return xxx.buildAppleSelect(); } }, formatter: function(cellvalue, options, rowObject, action) { return xxx.buildAppleSelectHtml(cellvalue); } };

Я также экспериментировал с afterEditCell и другими подобными событиями - но проблема с ними заключается в том, что - нажатие на поле выбора не переводит продажу в режим редактирования - сначала нужно щелкнуть ячейку, а затем выберите.

Вкратце - как получить выбранное значение на стороне клиента - можно ли это сделать?

Здесь есть вопросы здесь , здесь и здесь . Но, похоже, никто не решает проблему (на стороне клиента).

Ответы [ 2 ]

0 голосов
/ 02 июля 2010

Дэн, мне кажется, ты ошибаешься.Я не совсем понимаю, почему вы хотите иметь ячейку сетки, содержащую <select>, но если вы объясните мне, что вы хотите, я уверен, что я найду решение вашей проблемы.

СначалаЯ объясняю, что я нахожу странным в вашем вопросе.Если вы определяете edittype: "select", то jqGid обычно содержит строку, а не элемент <select> внутри.Если вы находитесь в режиме редактирования (например, в режиме встроенного редактирования), то во всех других строках, кроме выбранной строки, также есть строка, а не элемент <select> внутри.Если пользователь выберет и нажмет ввод, режим редактирования будет завершен, и измененные данные будут сохранены (или отправлены на сервер).Поэтому также не важно, какие значения отображались раньше.

Мне кажется, у вас есть некоторые проблемы из-за некоторого пользовательского построения значений в buildAppleSelect и пользовательского форматирования в buildAppleSelectHtml.

Если вы хотите видеть промежуточные значения из выбора, вы можете использовать dataEvents с 'change' в editoptions.

Я надеюсь, теперь вы понимаете, что я нахожу странным в вашем вопросе.Если вы объясните мне, в чем ваша проблема и почему у вас есть более одного элемента <select> и вы хотите прочитать промежуточные значения выбора, я постараюсь найти решение для вас.

ОБНОВЛЕНО : Я опубликовал код, который показывает, как использовать dataEvents с 'change' в Встроенное редактирование JQGrid: Фильтр раскрывающегося списка подкатегории на основе раскрывающегося списка другой категории .Возможно, это поможет вам.

0 голосов
/ 02 июля 2010

Нет.Вот некоторый HTML-код, который я получил из тестовой таблицы с использованием getRowData:

<select class="editable" size="1" name="test" id="5_test">
 <option value="0">Zero</option>
 <option value="1">One</option>
 <option value="3">Three</option>
 <option value="4">Four</option>
</select>

Вы правы - в разметке недостаточно информации, чтобы определить, какое значение выбрано.Чтобы получить выбранное значение, вам нужно вывести строку из режима редактирования, например, используя метод сетки saveRow.

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