2012-05-31 4 views
3

Я использую jqGrid с inlineNav, чтобы пользователи могли редактировать/добавлять/удалять строки локально, а затем отправлять все изменения на сервер по завершении. Я хотел бы иметь возможность добавлять несколько новых строк в сетку локально, но из-за других требований мне нужно, чтобы новые добавленные строки имели уникальные идентификаторы, а не по умолчанию new_row. Кроме того, я не могу использовать вызов ajax для постоянного сохранения новых строк при добавлении из-за ограничений внешнего ключа. Я попытался следующий, но значение ID не меняется:Могу ли я изменить идентификатор недавно добавленной строки в jqGrid?

<input type="hidden" id="newRowIndex" /> 

$("#thisGrid").jqGrid('inlineNav', '#thisGridPager', { 
    edit: false, 
    addtext: "Add", 
    save: false, 
    cancel: false, 
    addParams: { 
     position: 'last', 
     addRowParams: { 
      keys: true, 
      oneditfunc: function (rowid) { 
       var newRowIndex = $("#newRowIndex").val(); 
       if (!newRowIndex) 
        newRowIndex = 1; 
       $("#thisGrid").jqGrid('setCell', rowid, 'id', rowid + "_" + newRowIndex, '', ''); 
       newRowIndex++; 
       $("#newRowIndex").val(newRowIndex); 
      } 
     } 
    } 
}); 

Я просто хотел бы установить идентификатор вновь добавленной строку к new_row_1, увеличивающемуся индексу для каждой вновь добавляемой строки. Возможно ли это, и если да, то как?

Решение

В дополнение к ответу Дина, я обнаружил, что она не работает, делая это в oneditfunc из addRowParams. Я обнаружил, что с помощью afterInsertRow события jqGrid работает:

afterInsertRow: function (rowid, rowdata, rowelem) { 
    if (rowid == 'new_row') { 
     var newRowIndex = $("#newRowIndex").val(); 
     if(!newRowIndex) 
      newRowIndex = 1; 
     var newRowId = rowid + "_" + newRowIndex; 
     $("#new_row").attr('id', newRowId); 
     newRowIndex++; 
     $("#newRowIndex").val(newRowIndex); 
    } 
} 
+0

у меня возникают проблемы, делая эту работу. После динамического изменения идентификатора после строки вставки он не позволяет мне немедленно редактировать. Я использую inline Add. – Marvzz

ответ

Смежные вопросы