我有一個使用表單編輯的網格設置。我希望用戶能夠僅編輯一些行。作爲開始,我認爲最簡單的方法是在我的服務器查詢中使用一列(可能是隱藏的),而XML則表示用戶擁有的Access或Role。所以基本上,網格現在有一列「訪問角色」,每行有'Y'或'N'。 (其中Y =用戶可以編輯,N =查看/只讀)jqGrid使一行只讀
我已經嘗試了幾件事情來實現這一點。最好的我想出了使用rowattr功能,但有缺陷的我所用,因爲它隱藏在網格中的行(我不想隱瞞不報,只是只讀):
function (rd) {
console.log('Row = '+rd.WWBPITM_SURROGATE_ID);
if (rd.ACCROLE === "N") {
console.log('RowAttr '+rd.ACCROLE);
return {"style": "display:none"};
}
這可能是一開始,但我不知道該從哪裏出發,我不確定是否用rowattr咆哮錯誤的樹。
我也是在loadComplete功能使用setCell,這樣的嘗試:
function GridComplete() {
var grid = $('#list1');
var rowids = grid.getDataIDs();
var columnModels = grid.getGridParam().colModel;
console.log('Check ACCROLE');
// check each visible row
for (var i = 0; i < rowids.length; i++) {
var rowid = rowids[i];
var data = grid.getRowData(rowid);
console.log('ACCROLE for '+rowid+' is '+data.ACCROLE);
if (data.ACCROLE == 'N') { // view only
// check each column
//console.log(data);
for (var j = 0; j < columnModels.length; j++) {
var model = columnModels[j];
if (model.editable) {
console.log('Is Editable? '+model.editable);
//grid.setCell(rowid, model.name, '', 'not-editable-cell', {editable: false, edithidden: true});
grid.setCell(rowid, model.name, '', 'not-editable-cell', {editoptions: { readonly: 'readonly', disabled: 'disabled' }});
}
}
}
}
}
但editoptions似乎並沒有做這樣的事情。
任何想法如何做到這一點?
我也想過也許我可以使用現有的事件,但我不確定是否有像「beforeEdit」這樣的表單編輯。我也願意修改或擴展源代碼來捕獲編輯Click事件......但我需要知道在哪裏尋找... – Bean 2015-02-17 21:08:27