2015-05-24 28 views
6

के लिए गतिशील डिफ़ॉल्ट मान मुझे अपने केंडो ग्रिड में auto increment कॉलम चाहिए। यह फ़ील्ड सर्वर साइड ऑटो वृद्धि नहीं है, क्योंकि मैं चाहता हूं कि उपयोगकर्ता मूल्य देखें और इसे बदलने में सक्षम हो।केंडो ग्रिड

मेरा वर्तमान समाधान विशेषता Create बटन और पंक्तियों पर लूप को उच्चतम मूल्य खोजने और इसे बढ़ाने के लिए जोड़ना है।

लेकिन मैं इस मूल्य को नव निर्मित पंक्ति के अंदर कैसे सम्मिलित कर सकता हूं? नई पंक्ति बनने से पहले Click घटना होती है।

  1. डिफ़ॉल्ट मान के रूप में एक चर है और मेरी जे एस कोड में इसे अद्यतन:

    तो दो संभावित समाधान है।

  2. किसी भी तरह की बनाई गई पंक्ति को एक्सेस करें, और मान अपडेट करें।

यह मेरी जे एस कोड है:

function createClick(id) { 
    var grid = $("#" + id).data('kendoGrid'); 
    var highestRadif = 0; 
    grid.tbody.find('>tr').each(function() { 
     var dataItem = grid.dataItem(this); 
     var radif = dataItem.SRadifReqR; 
     highestRadif = highestRadif < radif ? radif : highestRadif; 
    }) 
    alert(++highestRadif); 
} 

उत्तर

5

आप नए ग्रिड के model के लिए अपने नए generatedId मान जोड़ने के लिए ग्रिड के edit घटना का उपयोग कर सकते हैं।

संपादित निकाल दिया जब उपयोगकर्ता संपादन या एक डेटा आइटम बनाता है:

यह उनकी documentation से कुछ स्पष्टीकरण है।

  • e.containerjQuery, संपादित कंटेनर तत्व है, जो संपादन UI लिपट jQuery वस्तु।
  • e.modelkendo.data.Model, डेटा आइटम जिसे संपादित किया जा रहा है। डेटा आइटम नया (बनाया गया) या नहीं (संपादित) है या नहीं, यह जांचने के लिए इसकी नई विधि का उपयोग करें।
  • e.senderkendo.ui.Grid, विजेट उदाहरण जो घटना को निकाल दिया गया।

मैं अपने क्लिक लगता है तो संपादित घटना पर इस

//generate id code 
vm.newId = ++highestRadif; // we need to store generated Id 
grid.addRow(); 

की तरह कुछ है

edit: function(e) { 
    var model = e.model; // access edited/newly added model 
    // model is observable object, use set method to trigger change event 
    model.set("id", vm.newId); 
} 

नोट: अपने स्कीमा मॉडल के क्षेत्र संपत्ति editable: true सेट करना होगा, कारण सक्षम करने के लिए हमें set विधि का उपयोग कर मॉडल फ़ील्ड मान बदलने के लिए। अगर आपके क्षेत्र स्कीमा में सत्यापन की आवश्यकता है, तो आपको इसे हटाने की आवश्यकता है।

model: { 
    id: "ProductID", 
    fields: { 
     ProductID: { editable: true, nullable: true }, 
    } 
} 

Sample

+0

'vm'' से आपका क्या मतलब है? वह क्या है? – Akbari

+1

यह सिर्फ मॉडल चर देखता है। यदि आप व्यू मॉडल ऑब्जेक्ट का उपयोग नहीं करते हैं, तो आप विंडो स्कोप वैरिएबल (उदा। 'window.newId') –

+0

का उपयोग कर सकते हैं, संपूर्ण विधि को' एडिट 'फ़ंक्शन के अंदर लिखना बहुत आसान होगा। क्या आप जानते हैं कि मैं 'ई' से 'ग्रिड' कैसे प्राप्त कर सकता हूं? आपकी मदद और ध्यान के लिए धन्यवाद। – Akbari

0

मैं इस के लिए डेटा स्रोत स्कीमा में एक समारोह डाल करने में सक्षम था।

schema: { 
    model: { 
     id: "id", 
     fields: { 
      currencyType: { defaultValue: getDefaultCurrency }, 
      invoiceDate: { type: "date" } 
     } 
    } 
} 

    function getDefaultCurrency() { 
     return _.find(vm.currencyTypes, { id: vm.currencyId }); 
    }; 
संबंधित मुद्दे