2011-10-30 16 views
5

टूलबार बटन को jqgrid में नई पंक्ति जोड़ने के लिए उपयोग किया जाता है। प्रपत्र जोड़ें जो सभी दायर vlaues खाली दिखाई देता है। पंक्ति से कॉलम मानों से फॉर्म फ़ील्ड मान कैसे सेट करें, जो कमांड जारी किए जाने पर वर्तमान/चयनित था? जेसन रिमोट डेटा का उपयोग किया जाता है। या यदि यह आसान है, सर्वर से फ़ॉर्म जोड़ने के लिए डिफ़ॉल्ट मान पुनर्प्राप्त करने के लिए वर्तमान/चयनित पंक्ति को पारित करने के लिए सर्वर विधि को कैसे कॉल करें?वर्तमान पंक्ति से jqgrid में फॉर्म जोड़ने के लिए डिफ़ॉल्ट फ़ील्ड मान कैसे सेट करें

jqgrid में छिपा स्तंभ भी शामिल हैं। यदि मौजूदा पंक्ति से छिपे कॉलम से संभावित मान भी नियंत्रक जोड़ने के लिए भेजा जाना चाहिए यदि फॉर्म जोड़ दिया गया है।

अद्यतन

मैं का उपयोग कर

  afterShowForm: function(formID) { 
      var selRowData, 
       rowid = grid.jqGrid('getGridParam', 'selrow'); 
      if (rowid === null) { 
      // todo: how to cancel add command here 
      alert('Please select row'); 
      return; 
      } 

      selRowData = grid.jqGrid('getRowData', rowid); 
      if (selRowData === null) { 
      alert('something unexpected happened'); 
      return; 
      } 

      $('#' + 'Baas' + '.FormElement', formID).val(selRowData.Baas); 
      } 

आवेदन द्वारा ओलेग महान सुझाव का उपयोग करने की कोशिश की रूप सहेजने के बाद खुला जोड़ने रहता है। बास क्षेत्र को बचाने के बाद खाली है। ऐसा लगता है किShowForm ईवेंट केवल एक बार चलता है, हर सहेजने के बाद नहीं। इसे कैसे ठीक करें ताकि डिफ़ॉल्ट मानों के साथ कई पंक्तियों को जोड़ने के फॉर्म को बंद किए बिना जोड़ा जा सके? कोई चयनित पंक्ति नहीं होने पर कमांड को कैसे रद्द करें या अनुमति नहीं दें?

उत्तर

4

आप केवल आप कम से कम दो दृष्टिकोण का उपयोग कर सकते प्रपत्र जोड़ें के लिए कुछ आरंभीकरण कार्रवाई करने की जरूरत है:

  • editoptions के अंदर समारोह के रूप में defaultValue संपत्ति का उपयोग। कॉलबैक फ़ंक्शन defaultValue चयनित पंक्ति से डेटा के आधार पर जोड़ें फ़ॉर्म के संबंधित फ़ील्ड के लिए मान प्रदान कर सकता है। अनुकूलन उद्देश्य के लिए आप beforeInitData कॉलबैक/ईवेंट में एक बार वर्तमान चयनित पंक्ति से डेटा पढ़ सकते हैं। आपको जिस डेटा की आवश्यकता है उसे प्राप्त करने के लिए आप केवल उस डेटा को पढ़ सकते हैं या सर्वर को सिंक्रोनस कॉल कर सकते हैं। defaultValue प्रॉपर्टी के उपयोग का एकमात्र नुकसान यह है कि यह jQuery.val विधि का उपयोग अपवाद 'चेकबॉक्स' edittype के साथ फ़ॉर्म के सभी फ़ील्ड के लिए डिफ़ॉल्ट मान सेट करने के लिए करता है। चेकबॉक्स के लिए false, 0, no, off या undefined के चेकबॉक्स की चेकबॉक्स की चेक की गई संपत्ति defaultValue संपत्ति द्वारा लौटाए गए मान में नहीं मिली है। तो दृष्टिकोण अन्य edtypes के लिए काम नहीं करेगा। उदाहरण के लिए यह custom edittype के लिए असफल हो सकता है।
  • beforeShowForm या afterShowForm का उपयोग। कॉलबैक फ़ंक्शंस के अंदर आप फॉर्म का कोई भी मूल्य सेट कर सकते हैं। आप फ़ील्ड की आईडी द्वारा ग्रिड के संबंधित कॉलम के दायर को पा सकते हैं जो संबंधित कॉलम की name संपत्ति के मान के समान है।

आप की तरह पहले से ही आप getGridParam के संबंध में वर्तमान चयनित पंक्ति की आईडी प्राप्त करने और चयनित पंक्ति

var selRowData, rowid = grid.jqGrid('getGridParam', 'selrow'); 
if (rowid !== null) { 
    // a row of grid is selected and we can get the data from the row 
    // which includes the data from all visible and hidden columns 
    selRowData= grid.jqGrid('getGridParam', 'selrow'); 
} 

जहां grid$('#list') तरह jQuery वस्तु जो मुख्य चयन करता है से डेटा प्राप्त कर सकते हैं जानता है ग्रिड के <table> तत्व।

the demo में आप देख सकते हैं कि ऊपर वर्णित पहला दृष्टिकोण कैसे काम करता है।

+0

धन्यवाद। कुछ मामलों में jqueryUI स्वत: पूर्ण फ़ील्ड के लिए डिफ़ॉल्ट लुकअप टेबल से विदेशी कुंजी प्रविष्टि के लिए उपयोग किए जाने वाले डिफ़ॉल्ट मान सेट करने की आवश्यकता होती है।स्वत: पूर्ण कस्टम संपादन तत्व के रूप में लागू किया जाता है। कृपया पुष्टि करें, इस मामले मेंShowForm से पहले उपयोग करने का सबसे अच्छा तरीका है? क्या हमें डिफ़ॉल्ट फ़ील्ड सेट करने के लिए दो तरीकों को मिलाकर टालने के लिए अन्य क्षेत्रों में शोफॉर्म से पहले उपयोग करना चाहिए? नमूना कोड कहां से मिलता है जो jqueryui autocomplete फ़ील्ड के डिफ़ॉल्ट रूप को एड फॉर्म में सेट करता है? – Andrus

+0

उत्तर नमूना कॉल में कोड नमूना 'grid.jqGrid (' getGridParam ',' selrow '); 'दो बार – Andrus

+0

@Andrus: मैं आपको नहीं कह सकता कि * सबसे अच्छा * एक तरीका क्या है। यह कई मानकों पर निर्भर कर सकता है। jQuery UI स्वत: पूर्ण 'स्रोत' आपको कई संभावनाएं प्रदान करता है कि आप सर्वर से डेटा कैसे प्राप्त कर सकते हैं, इसलिए आपको अपने पर्यावरण के लिए सबसे अच्छा तरीका चुनना चाहिए *। मैंने अभी दो तरीकों का वर्णन किया है जो दोनों को लागू किया जा सकता है। – Oleg

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