JQgrid флажок при обновлении базы данных - PullRequest
6 голосов
/ 26 августа 2011

У меня в JqGrid есть столбец с флажком, который загружается из БД, поэтому он либо проверяется, либо не проверяется при загрузке.

Что я хочу: если флажок установлен или снят пользователем, я хочу обновить БД одновременно. Я не хочу, чтобы пользователь нажимал ввод или что-то еще. только 1 клик и отправить действие в БД

имя: 'Aktiv', индекс: 'Aktiv', ширина: 100, тип редактирования: 'checkbox', выравнивание: 'center', форматер: "checkbox", редактируемый: true, форматирование: {disabled: false}

Ответы [ 3 ]

16 голосов
/ 27 августа 2011

Вы можете установить обработчик событий click внутри loadComplete:

loadComplete: function () {
    var iCol = getColumnIndexByName ($(this), 'Aktiv'), rows = this.rows, i,
        c = rows.length;

    for (i = 1; i < c; i += 1) {
        $(rows[i].cells[iCol]).click(function (e) {
            var id = $(e.target).closest('tr')[0].id,
                isChecked = $(e.target).is(':checked');
            alert('clicked on the checkbox in the row with id=' + id +
                '\nNow the checkbox is ' +
                (isChecked? 'checked': 'not checked'));
        });
    }
}

, где

var getColumnIndexByName = function(grid, columnName) {
    var cm = grid.jqGrid('getGridParam', 'colModel'), i, l;
    for (i = 1, l = cm.length; i < l; i += 1) {
        if (cm[i].name === columnName) {
            return i; // return the index
        }
    }
    return -1;
};

Вместо alert вы должны использовать jQuery.ajax для отправки информации на сервер об обновлении состояния флажка.

Здесь вы можете увидеть демо .

1 голос
/ 17 июня 2013

Небольшая поправка в loadComplete: function (). в демонстрации вы можете обнаружить, что даже после того, как флажок установлен, если вы щелкнете вне флажка в этой ячейке, значение изменится на «ложь» с «истина».

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

for (i = 1; i < c; i += 1) {
    $(('input[type="checkbox"]'),rows[i].cells[iCol]).click(function (e) {
        var id = $(e.target).closest('tr')[0].id,
            isChecked = $(e.target).is(':checked');
        alert('clicked on the checkbox in the row with id=' + id +
              '\nNow the checkbox is ' +
              (isChecked? 'checked': 'not checked'));
    });
}

и спасибо за ответ :-) (@Oleg) мне очень помогли .. со временем конечно ..;)

0 голосов
/ 11 января 2016

Чтобы изменить значения другого столбца, нажмите на флажок

var weightedAvgPriceIndex = getColumnIndexByName($(this), 'WeightedAveragePrice'),
    rows = this.rows,
    i,
    c = rows.length;

for (i = 1; i < c; i += 1) {
    $(('input[type="checkbox"]'),rows[i].cells[iCol]).click(function (e) {
      var id = $(e.target).closest('tr')[0].id;
      isChecked = $(e.target).is(':checked');
      var x = $('#' + id + ' td:eq(' + weightedAvgPriceIndex + ')').text();
      $('#' + id + ' td:eq(' + weightedAvgPriceIndex + ')').text(Math.abs(x) + 10);
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...