2012-01-15 11 views
6

0 इनमें इनलाइन ऐड बटन का उपयोग करके पंक्ति को जोड़ा गया है तो डिफ़ॉल्ट मान कैसे सेट करें यदि पंक्ति का उपयोग करके पंक्ति जोड़ा गया है तो नीचे पंक्ति कोड नई पंक्ति के लिए डिफ़ॉल्ट मान सेट करता है। यदि टूलबार से jqGrid इनलाइन ऐड बटन का उपयोग करके पंक्ति जोड़ा जाता है, तो उन विधियों को नहीं कहा जाता है और डिफ़ॉल्ट मान सेट नहीं होते हैं।यदि jqgrid

नीचे कोड के रूप में समान तर्क करने के लिए इनलाइन जोड़ने को कैसे मजबूर किया जाए?

var lastSelectedRow; 
$grid.navGrid("#grid_toppager", { 
del: true, 
add: true, 
view: true, 
edit: true 
      }, 
      {}, 

     { 
     addedrow: 'beforeSelected', 
     url: '/Grid/Add?_entity=Desktop', 
     beforeInitData: function() { 
     // todo: how to call this method from inline add 
     var rowid = $grid.jqGrid('getGridParam', 'selrow'); 
     if (rowid === null) { 
      alert('Select row before adding'); 
      return false; 
      } 
     }, 

     afterShowForm: function(formID) { 
     // todo: how to set default values as this method sets from inline add 
     var selRowData, 
      rowid = $grid.jqGrid('getGridParam', 'selrow'); 
     $('#' + 'Recordtype' + '.FormElement').val('Veerg'); 
     $('#' + 'Nait2' + '.FormElement')[0].checked = true; 
     selRowData = $grid.jqGrid('getRowData', rowid); 
     $('#' + 'Baas' + '.FormElement').val(selRowData.Baas); 
     $('#' + 'Liigid' + '.FormElement').val(selRowData.Liigid); 
     } 
     ); 


$grid.jqGrid('inlineNav', '#grid_toppager', { 
    addParams: { 
     position: "beforeSelected", 
     rowID: '_empty', 
     useDefValues: true, 
     addRowParams: { 
      keys: true, 
      onEdit : onInlineEdit 
     } 
    }, 

    editParams: { 
     editRowParams: { 
      onEdit : onInlineEdit 
      } 
    }, 

    add: true, 
    edit: false, 
    save: true, 
    cancel: true 
}); 

function onInlineEdit(rowId) { 
    if (rowId && rowId !== lastSelectedRow) { 
     cancelEditing($grid); 
     lastSelectedRow = rowId; 
    } 
    } 

अद्यतन

मैं कोड

$grid.jqGrid('inlineNav', '#grid_toppager', { 
    addParams: { 
     position: "beforeSelected", 
     rowID: '_empty', 
     useDefValues: true, 
     addRowParams: { 
      keys: true, 
      extraparam: { _dokdata: FormData }, 
      onSuccess : function (jqXHR) { 
alert('addp oncuss'); 
       jqXHRFromOnSuccess=jqXHR; 
       return true; 
       }, 
      afterSave: function (rowID) { 
alert('afeesave addp '); 
       cancelEditing($grid); 
        afterDetailSaveFunc(rowID,jqXHRFromOnSuccess); 
       jqXHRFromOnSuccess=null; 
       }, 
      onError: errorfunc, 
      afterRestore : setFocusToGrid, 
      oneditfunc : function (rowId) { 
       var selRowData, selRowId ; 
       if (rowId && rowId !== lastSelectedRow) { 
       cancelEditing($grid); 
       selRowId = $grid.jqGrid('getGridParam', 'selrow'); 
       if (selRowId) { 
        selRowData = $grid.jqGrid('getRowData', selRowId); 
        $('#' + rowId + '_Reanr').val(selRowData.Reanr); 
        } 
       lastSelectedRow = rowId; 
       } 
      } 
     } 
    } 
); 

केवल oneditfunc समारोह कहा जाता है की कोशिश की। सिक्योर, ऑनसेव, ऑनर इत्यादि पर बल कैसे लगाया जाए? जवाब में सिफारिश की और

$.extend(jQuery.jgrid.inlineEdit, { 
    addParams: { 
    position: "beforeSelected", 
    rowID: '<%= EntityBase.NewRowIdPrefix %>', 
    useDefValues: true, 
    addRowParams: { 
     keys: true, 
     extraparam: { _dokdata: FormData }, 
     onSuccess : function (jqXHR) { 
     jqXHRFromOnSuccess=jqXHR; 
     return true; 
     }, 
     afterSave: function (rowID) { 
       cancelEditing($grid); 
       <% if (Model is RowBase) { %> 
        afterDetailSaveFunc(rowID,jqXHRFromOnSuccess); 
       <% } else { %> 
        afterGridSaveFunc(rowID,jqXHRFromOnSuccess); 
       <% } %> 
       jqXHRFromOnSuccess=null; 
       }, 
     onError: errorfunc, 
     afterRestore : setFocusToGrid, 
     oneditfunc : function (rowId) { 
     if (rowId && rowId !== lastSelectedRow) { 
      cancelEditing($grid); 
      lastSelectedRow = rowId; 
      } 
     } 
     } 
    } 
}); 

की कोशिश की

अद्यतन 2

मैं GitHub से jqGrid के लिए पैच जोड़ा मैं इस मामले दर्ज इनलाइन जोड़ने समाप्त नहीं करता। इस कोड के सभी पैरामीटर अनदेखा कर रहे हैं।

उत्तर

5

आपको defaultValueeditoptions की नई नई पंक्ति के लिए डिफ़ॉल्ट मान सेट करने के लिए उपयोग करना चाहिए। वर्तमान दस्तावेज में आप पाते हैं कि विकल्प केवल फॉर्म संपादन मॉड्यूल में मान्य है:

विकल्प स्ट्रिंग या फ़ंक्शन हो सकता है। यह विकल्प केवल फॉर्म संपादन मॉड्यूल में मान्य है जब संपादन मोड में editGridRow विधि के साथ उपयोग किया जाता है। यदि परिभाषित किया गया है तो इनपुट तत्व इस मान के साथ सेट किया गया है यदि केवल तत्व खाली है। यदि चयन में प्रयोग किया जाता है तो पाठ प्रदान किया जाना चाहिए और कुंजी नहीं। जब फ़ंक्शन का उपयोग किया जाता है तो फ़ंक्शन को मूल्य वापस करना चाहिए।

लेकिन अगर आप नए addRow विधि का कोड की जांच आपको लगता है कि

  1. useDefValues विकल्प का डिफ़ॉल्ट मान true
  2. विधि (here देखें) का उपयोग करते हैं की defaultValue संपत्ति है देखेंगे editoptions

अद्यतन: ठीक है! अब मैं आपकी समस्या देखता हूं। आपने editRowParams और addRowParams सेटिंग्स के कुछ हिस्सों में केवल गलत गुणों का उपयोग किया था। सही हो जाएगा:

$grid.jqGrid('inlineNav', topPagerSelector, { 
    addParams: { 
     position: "beforeSelected", 
     rowID: '_empty', 
     useDefValues: true, 
     addRowParams: { 
      keys: true, 
      oneditfunc : onInlineEdit 
     } 
    }, 
    editParams: { 
     keys: true, 
     oneditfunc: onInlineEdit 
    }, 
    add: true, 
    edit: false, 
    save: true, 
    cancel: true 
}); 

इसके अलावा आप इनलाइन संपादन के keys, oneditfunc या अन्य पैरामीटर सेट करने के लिए नए $.jgrid.inlineEdit सुविधा का उपयोग कर सकते हैं। सुविधा का कार्यान्वयन पूर्ण नहीं है, लेकिन आप github से वर्तमान संस्करण की जांच कर सकते हैं (here देखें) और jquery.jqGrid.src.js के अपने संस्करण में वही संशोधन करें। किसी भी तरह से मैं jqGrid के अगले संस्करण को प्रकाशित करने के बाद $.jgrid.inlineEdit सुविधा का उपयोग करने की अनुशंसा करता हूं।लाभ यह है कि आप editRow के विकल्प को आसानी से सेट कर सकते हैं जहां से फ़ंक्शन को कॉल किया जाएगा (inlineNav, 'actions' फ़ॉर्मेटर या किसी अन्य तरीके से)।

न्यू jqGridInlineEditRow घटना सुविधा (अधिक जानकारी के लिए here देखें) तुम क्या आपoneditfunc के उपयोग जो केवल एक बार सेट किया जा सकता बिना onInlineEdit घटना के अंदर अब क्या तरह के कार्यों को लागू करने के लिए अनुमति देगा।

+0

आपको बहुत बहुत धन्यवाद। प्रश्न में कोड वर्तमान पंक्ति से डिफ़ॉल्ट मान पुनर्प्राप्त करता है और वर्तमान पंक्ति सेट नहीं होने पर पंक्ति जोड़ने की अनुमति नहीं देता है। डिफ़ॉल्ट वैल्यू का उपयोग करके इसे कैसे कार्यान्वित करें? – Andrus

+0

@Andrus: बिल्कुल कोड अलग-अलग चीजें करें। '$ ('#' + 'रिकॉर्डटाइप' + 'फॉर्म एलिमेंट') जैसी लाइनें। वैल ('वेर्ज');' और '$ ('#' + 'नैट 2' + 'फॉर्म एलेमेंट') [0]। चेक = सत्य; 'डिफ़ॉल्ट मानों की शुद्ध सेटिंग हैं। अन्य सेटिंग्स के कारण मुझे समझ में नहीं आता कि आप 'ऑनएडिट' हैंडलर के अंदर सेटिंग्स क्यों नहीं करते हैं (आपके मामले में 'onInlineEdit' फ़ंक्शन में)? – Oleg

+0

मुझे वर्तमान पंक्ति से मूल्य प्राप्त करने की आवश्यकता है। मुझे नहीं पता कि वर्तमान पंक्ति मानों को InlineEdit में कैसे प्राप्त करें। शायद वर्तमान में पहले से ही पंक्ति जोड़ा गया है, पिछली पंक्ति मान प्राप्त करने का कोई तरीका नहीं है। अगर कोई वर्तमान पंक्ति नहीं है, तो इनलाइन शॉउडल को अवरुद्ध कर दें। onInlineedit कैंसड ऑपरेशन को जोड़ने की अनुमति नहीं देता है, नई पंक्ति पहले ही जोड़ दी गई है। – Andrus

 संबंधित मुद्दे