Jqgrid.Найдите rowId из значения ключа - PullRequest
2 голосов
/ 10 декабря 2010

У меня есть базовая реализация jqgrid.

$('.fsJqGrid').jqGrid({
    datatype: "local",
    height: 175,
    colNames: ['FeatureId', 'Name', ''],
    colModel: [
        { name: 'FeatureId', index: 'FeatureId', width: 75, align: 'left',
          sorttype: "int", hidden: true, key: true },
        { name: 'Name', index: 'Name', width: 180 },
        { name: 'tools', index: 'tools', width: 150}
    ]
});

function FeatGridAddRow(jqTableName, feature) {
    ///<summary>Adds a row of data to a Feature JQGrid</summary>
    var RowId = $("#" + jqTableName).jqGrid('getGridParam', 'reccount');

    feature.tools = 'MyToolHtml';

    $("#" + jqTableName).jqGrid('addRowData', RowId, feature); //jqgrid
} //function

function FeatGridUpdateRow(featureId, newName) {
    ///<summary>Updates JQGrid data row</summary>

    //I need to find the rowId, based on the featureId parameter
    var rowId = 0;      

    //update grid with new data
    $("#tabFS0").jqGrid('setRowData' , rowId , {Name: newName});
} //function

Я хочу иметь возможность обновлять строку данных, но для этого нужно знать rowId.

Единственные данные, которые у меня есть, это значение ключа (featureId).

Так что я ищу способ найти rowId на основе значения первичного ключа, которое я знаю.

Я просматривал документацию по jqgrid и не вижу очевидного способа сделать это.


ОБНОВЛЕНИЕ: Ответ заключается в использовании моей таблицы PK в качестве rowId.

Итак, в функции добавления;

var RowId = $("#" + jqTableName).jqGrid('getGridParam', 'reccount');
$("#" + jqTableName).jqGrid('addRowData', RowId, feature);

становится

$("#" + jqTableName).jqGrid('addRowData', feature.FeatureId, feature);

1 Ответ

3 голосов
/ 10 декабря 2010

Поскольку вы определили FeatureId с помощью key:true, идентификатор каждой строки будет таким же, как и значение из столбца FeatureId.Если вы не наберете t need it you should remove key: true` setting.

Вы не публикуете пример полного кода, который используете, поэтому я полагаю, что у вас возникла проблема в месте кода, где вы должны заполнить данныеjqGrid.Я не понимаю сценарий, который у вас есть.Откуда вы получаете данные, которые вы хотите заполнить в сетке?Вы получаете только один ряд одновременно?Вы получаете дату с сервера, из локального источника данных или из пользовательского ввода?Наиболее эффективный способ заполнить строку - использовать параметр data в jqGrid (см. этот ответ ).Кроме того, jqGrid имеет богатые возможности для заполнения сетки в соответствии с ajax-запросом.

Чтобы ответить на ваш главный вопрос о редактировании данных, вы должны описать контекст.Вам нужно, чтобы пользователь мог изменять данные?Затем вы можете использовать встроенное редактирование, редактирование форм или редактирование ячеек (см. документация и «Редактирование строк» ​​/ «Типы ввода» и «Манипуляция данными в реальном времени» / «Навигатор»), выберите строку и нажмите кнопку редактирования нанавигатор на официальная демоверсия jqGrid ).Если вы хотите изменить строку, которая изменена не пользователем, вы можете использовать такие функции, как setRowData .

Поэтому, если вы объясните больше, что делает ваше приложение и как вы используете jqGrid, я мог бы написатьвам больше ссылок.

...