2011-01-26 10 views
6

मैं निम्नलिखित तरीके से महान उत्तराधिकारी के साथ jqgrid का उपयोग कर:अंतिम रूप दिया जा संपादन

  1. डेटा JSON के रूप में सर्वर से भरी हुई है
  2. उपयोगकर्ता इनलाइन संपादन कर
  3. जब एक को बचाने के बटन सभी डेटा पर क्लिक किया गया है:

    var data = $ ("# mygrid")। getRowData();

    var datajson = JSON.stringify (डेटा);

इस aproach के साथ समस्या यह है कि मैं अपने json-डेटा में इनपुट तत्वों मिल जाएगा, तो उपयोगकर्ता वापसी दबाया या संपादित सेल से दूर चले गए नहीं किया है। संपादन मोड को समाप्त करने का कोई तरीका है I jqgrid?

उत्तर

5

आप डेटा को बचाने के लिए saveRow का उपयोग कर सकते हैं।

saveRow का उपयोग करने के लिए आपको वर्तमान संपादन योग्य पंक्ति की पंक्ति आईडी जाननी है। उदाहरण के लिए आप एक चर में वर्तमान संपादन की पंक्ति को सहेज सकते हैं (इससे पहले कि आप editRow पर कॉल करें) और saveRow विधि को कॉल करने के लिए मान का उपयोग करें।

अद्यतन:the demo देखें। पहले कुछ पंक्ति का चयन करें, मानों को संशोधित करें और फिर "वर्तमान संपादन पंक्ति सहेजें" बटन पर क्लिक करें। आप देखेंगे कि परिवर्तन बचाए जाएंगे।

+0

क्षमा करें, कि यह नहीं करता है। saveRow पंक्ति को सहेजने के लिए विधि को कॉल करता है, लेकिन सेल अभी भी संपादन मोड में है। – Bebben

+1

@ बेबेन: आपने अपने कार्यान्वयन में कुछ त्रुटि की है। मैंने डेमो जोड़ा जो दर्शाता है कि 'saveRow' काम का उपयोग। यदि आपको स्थानीय बचत के बजाय सर्वर पर डेटा को सहेजने की आवश्यकता है, तो आपको 'saveRow'' के अन्य पैरामीटर का उपयोग करना चाहिए: मैंने आपके द्वारा पोस्ट की गई 'saveRow'' के लिंक को बिल्कुल पढ़ें। – Oleg

+0

ओलेग धन्यवाद! अब आकर्षक के रूप में काम करता है! मुझे लगता है कि समस्या यह थी कि मेरे सेलिडिट में मेरा ग्रिड था, और इससे पहले कि मैं saveRow कॉल कर सकूं, मुझे सेल एडिट को कॉल करना होगा। अब मैं संपादन पंक्ति में सभी पंक्तियों को सेट करके और सभी पंक्तियों पर कॉल सेव सबमिट करने से पहले शुरू करता हूं। धन्यवाद! – Bebben

0

मैं ट्रिगर "keydown" द्वारा इसे हल है तत्व पर घटना ENTER:

editoptions: { 
        dataInit: function(elem) { 
         $(elem).datetimepicker({ 
          dateFormat: "yy-mm-dd", 
          onClose: function(datetimeText, datepickerInstance) { 
           $(elem).trigger($.Event("keydown", { keyCode: $.ui.keyCode.ENTER })) 
          } 
         }); 
        } 
       } 
0

मैं दूरदराज के प्रत्येक कक्ष के लिए प्रस्तुत उपयोग करते हैं, और मैं प्रयोग किया जाता है के रूप में "contenteditable" (बहु पाठ के लिए) सेल संपादक के लिए div, मैं ctrl-enter के साथ सेल संपादन समाप्त करना चाहता था।

(ओलेग का जवाब और How to close cell-editor? और http://www.trirand.com/jqgridwiki/doku.php?id=wiki:cell_editing के आधार पर)

$(document).ready(function() { 
    var grid,currentCell; 
    $(".jqGrid_wrapper").on("keydown","div[contenteditable]",function (e) { 
     if (e.ctrlKey && e.keyCode == 13) 
     { 
      grid.jqGrid("saveCell",currentCell.iRow,currentCell.iCol); 
      return false; 
     } 

     return true; 
    }); 
    grid=$("#table_list_2"); 
    grid.jqGrid({ 
     url: ... 
     cellEdit: true, 
     cellsubmit: 'remote', 
     cellurl: '..',  

     beforeEditCell: function(rowid, cellname, value, iRow, iCol) { 
      currentCell={ 
        rowid:rowid, cellname:cellname, value:value, iRow:iRow, iCol:iCol 
      } 
     }    
    }); 
}); 
संबंधित मुद्दे