2015-05-20 13 views
5

मैं को नष्ट करने और मेरी एक्सेल शीट मैं इसके लिए Handsontable उपयोग कर रहा हूँ वस्तु को नष्ट कर दिया जा रहा है और नए बनाया है, लेकिन पंक्ति के अंदर डेटा पुरानेhandsontable को नष्ट करने और बनाने

के लिए भी नई तालिका के लिए एक ही है पुन: बनाने के लिए चाहते हैं

शीर्षक के बाद से करने के लिए SO QUESTION मैं क्रियान्वित किया है क्या पिछले तो सवाल में जवाब था समान है, लेकिन मैं अभी भी
JSFIDDLE

 <div id="example1" class="hot handsontable"></div> 
    <select class="client_class"> 
    <option value="">Select client</option> 
    <option value="DEFGH">DEFGH</option> 
    </select> 


    var autosaveNotification; 
    var hotInstance; 
    var setting1 = { 
    data: [], 
    colHeaders: ['InvoiceNo', 'InvoiceDate', 'Supplier'], 
    columns: [{ 
     data: 'InvoiceNo' 
    }, { 
     data: 'InvoiceDate' 
    }, { 
     data: 'Supplier' 
    }], 
    rowHeaders: true, 
    minSpareRows: 1, 
    minRows: 5, 
    manualColumnResize: true, 
    manualRowResize: true, 
    fixedColumnsLeft: 1, 
    manualColumnMove: true, 
    manualRowMove: true, 
    }; 
    hotInstance = new Handsontable(jQuery("#example1")[0], setting1); 

    jQuery('.client_class').on('change', function() { 
    var selected = $(this).find("option:selected").val(); 
    console.log(hotInstance.getData()); 
    hotInstance.destroy(); 
    hotInstance = new Handsontable(jQuery("#example1")[0], setting1); 
    console.log(hotInstance.getData()); 
    }); 

उत्तर

1

अटक कर रहा हूँ मुझे लगता है अपने प्रश्न है कि आप एक बनाने के लिए कोशिश कर रहे हैं खाली डेटा के साथ नई तालिका लेकिन आपका है ऐसा नहीं कर रहा सरल समाधान यह है कि दूसरी पंक्ति में आप नए हॉट ऑब्जेक्ट को setting1 पर नए विकल्प ऑब्जेक्ट के रूप में सेट कर रहे हैं, यह भूलकर कि जेएस में ऑब्जेक्ट्स को उत्परिवर्तित किया जा सकता है, जिसका अर्थ है कि setting1.data तालिका के बावजूद उत्परिवर्तित किया जा रहा है।

प्राप्त करने के लिए मैं क्या लगता है कि आपके इच्छित व्यवहार है, एक नया गर्म उदाहरण बनाने से पहले रीसेट setting1.data:

jQuery('.client_class').on('change', function() { 
    var selected = $(this).find("option:selected").val(); 
    console.log(hotInstance.getData()); 
    hotInstance.destroy(); 
    setting1.data = []; // this is the new line 
    hotInstance = new Handsontable(jQuery("#example1")[0], setting1); 
    console.log(hotInstance.getData()); 
}); 

आप देख सकते हैं, इस से यह सुनिश्चित होगा तुम सिर्फ data वस्तु को रीसेट कर रहे हैं। यह समस्या तब होती है क्योंकि जब आप तालिका संपादित करते हैं तो हॉट जानबूझकर data ऑब्जेक्ट को म्यूटेट करता है। यदि आप चाहते हैं, उदाहरण के लिए, data ऑब्जेक्ट को अपने दो client modes में से प्रत्येक के लिए सहेजें, तो मेरा सुझाव है कि आप तर्क जोड़ें जो प्रत्येक data ऑब्जेक्ट को संग्रहीत करता है और नया हॉट उदाहरण बनाने से पहले इसे ठीक से पुनर्प्राप्त करता है। कुछ इस तरह:

setting1.data = storedDataObjects["client1"]; // if adding "client1" 
+0

आपके उत्तर के लिए धन्यवाद, लेकिन आपको पता है कि मेरी की स्थापना 1 शामिल सभी तालिका के लिए सेटिंग और मैं इसे हर बार जब तालिका डेटा को छोड़कर नष्ट कर दिया और बनाया फिर – MayuriS

+0

है हाँ तब यह ऐसा देखा है चाहता हूँ । तो आप जो चाहते थे वह "डिफ़ॉल्ट मान" के साथ एक नई वस्तु थी। एक और तरीका यह है कि एक ऐसी विधि हो जो इस वस्तु को बनाएगी और इसे हर बार नया करे। – ZekeDroid

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