में स्वत: पूर्ण के परिणामों के आधार पर एक jqGrid टेक्स्ट कॉलम की संपादन योग्य संपत्ति को बदलना मैं इनलाइन संपादन के साथ jqGrid 4.4.0 का उपयोग कर रहा हूं। इस प्रश्न के लिए, मेरे ग्रिड में चार कॉलम हैं: एक आईडी कॉलम (SomeGridRowId), एक jQuery स्वत: पूर्ण (स्वत: पूर्ण) के साथ एक टेक्स्ट कॉलम, एक एकल वर्ण टेक्स्ट कॉलम (सिंगलरहर), और एक छिपा boolean
कॉलम (CanEditSingleChar)। मुझे CanEditSingleChar
कॉलम के मान के आधार पर एकल वर्ण कॉलम के संपादन को सक्षम या अक्षम करने की आवश्यकता है। मुझे यह onSelectRow
और setColProp
का उपयोग कर मौजूदा पंक्तियों पर काम कर रहा है, लेकिन किसी कारण से मैं इसे नई डाली गई पंक्तियों पर सही तरीके से व्यवहार नहीं कर सकता। यदि मैं एक नई पंक्ति जोड़ता हूं और स्वत: पूर्ण से एक मान का चयन करता हूं, तो SingleChar
कॉलम हमेशा संपादन योग्य नहीं है। मैंने क्रोम और आईई डेवलपर टूल का उपयोग कर जावास्क्रिप्ट के माध्यम से कदम रखा है; कॉलम मान और गुण ठीक से सेट हो रहे हैं, लेकिन SingleChar
कॉलम की editable
संपत्ति इसे प्रतिबिंबित नहीं करती है।किसी अन्य कॉलम
मैं विशाल कोड स्निपेट के लिए क्षमा चाहता हूं, लेकिन मैं कुछ भी छोड़ना नहीं चाहता हूं।
$("#coolGrid").jqGrid({
url: '@Url.Action("GetCoolGridData")',
postData: {
someId: function() { return $("#someId").val(); },
otherStaticArg: function() { return 1; }
},
datatype: 'json',
mtype: 'POST',
loadonce: true,
cellsubmit: 'clientArray',
editurl: 'clientArray',
scroll: true,
pager: $("#coolGridPager"),
rowNum: 200,
sortname: 'SomeGridRowId',
sortorder: 'asc',
viewrecords: true,
height: '100%',
colNames: ['SomeGridRowId', 'CanEditSingleChar', 'Autocomplete', 'SingleChar'],
colModel: [
{ name: 'SomeGridRowId', index: 'SomeGridRowId', hidden: true },
{ name: 'CanEditSingleChar', index: 'CanEditSingleChar', hidden: true },
{
name: 'Autocomplete',
index: 'Autocomplete',
width: 220,
editable: true,
edittype: 'text',
editoptions: {
dataInit: function (elem) {
$(elem).autocomplete({
source: '@Url.Action("GetSomeGridAutocomplete")',
minLength: 2,
select: function (event, ui) {
var rowId = getRowId($(this));
if (ui.item) {
$("#coolGrid").jqGrid('setCell', rowId, 'CanEditSingleChar', ui.item.CanEditSingleChar, '', '');
$("#coolGrid").jqGrid('setCell', rowId, 'Autocomplete', ui.item.label, '', '');
setSingleCharEditMode(rowId);
}
}
});
}
}
},
{
name: 'SingleChar',
index: 'SingleChar',
width: 10,
editable: true, //default to true, most are editable
edittype: 'text'
}
],
onSelectRow: function (clickedRow) {
if (clickedRow && clickedRow != $.coolGridLastSelectedRow) {
$("#coolGrid").jqGrid('saveRow', $.coolGridSelectedRow, false, 'clientArray');
$.coolGridLastSelectedRow = clickedRow;
}
setSingleCharEditMode($.coolGridLastSelectedRow);
$("#coolGrid").jqGrid('editRow', $.coolGridLastSelectedRow, true);
},
afterInsertRow: function (rowid, rowdata, rowelem) {
if (rowid == 'new_row') { //shown solely for completeness, pretty sure this is not the problem
var newRowIndex = $("#coolGridNewRowIndex").val();
if (!newRowIndex)
newRowIndex = 1;
var newRowId = rowid + "_" + newRowIndex;
$("#new_row").attr('id', newRowId);
newRowIndex++;
$("#coolGrid").val(newRowIndex);
$("#coolGrid").jqGrid('setSelection', newRowId, true);
}
}
});
$("#coolGrid").jqGrid('navGrid', '#coolGridPager',
{
add: false,
del: false,
edit: false,
search: false,
beforeRefresh: function() {
$("#coolGrid").jqGrid('setGridParam', { datatype: 'json' });
}
});
$("#coolGrid").jqGrid('inlineNav', '#coolGridPager',
{
edit: false,
add: true,
addtext: "Add",
save: false,
cancel: false,
restoreAfterSelect: false,
addParams: {
position: 'last',
addRowParams: {
keys: true
}
}
});
और setSingleCharEditMode
समारोह:
function setSingleCharEditMode(rowid) {
var rowData = $("#coolGrid").jqGrid('getRowData', rowid);
if (rowData.CanEditSingleChar === "false") {
$("#coolGrid").jqGrid('setColProp', 'SingleChar', { editable: false });
} else {
$("#coolGrid").jqGrid('setColProp', 'SingleChar', { editable: true });
}
}
मैं सामान की एक पूरी धसान की कोशिश की है, अन्य अतः सवालों के ढेर के माध्यम से rifled कोई लाभ नहीं हुआ पागल की तरह googled .... सब। मैंने अपने बालों को खींचने का सहारा लिया है। मैं किसी अन्य कॉलम पर स्वत: पूर्ण select
के बाद एक कॉलम की editable
संपत्ति को कैसे नियंत्रित कर सकता हूं, सब एक नई पंक्ति पर?
संपादित
मैं एक working example up here मिल गया है, अंत में। यदि आप एक पंक्ति जोड़ते हैं और फिर Autocomplete
कॉलम में "एटिकल *" का चयन करते हैं, तो आप इस व्यवहार को पुन: उत्पन्न कर सकते हैं।
आपकी विचारशील प्रतिक्रिया के लिए धन्यवाद। मैं अब ऑनलाइन एक उदाहरण प्राप्त करने पर काम कर रहा हूं। –
क्या आपने कोई प्रगति की है? और आप उस बक्षीस को आवंटित करने के बारे में क्या सोचते हैं? मुझे लगता है कि ग्रेस अवधि समाप्त होने से पहले कोई और जवाब नहीं होगा। – Wolfram
क्षमा करें, वुल्फ्राम, पिछले हफ्ते व्यस्त सप्ताह और मेरे पास पूरी तरह से काम करने वाला नमूना लेने का समय नहीं था। मैं आज इस पर काम करने की उम्मीद कर रहा हूं, लेकिन बक्षीस तुम्हारा है (हालांकि मुझे यकीन नहीं है कि यह 100 तक क्यों विभाजित है)। –