2016-02-22 8 views
7

के बाद संपादन सेल को छोड़कर संपूर्ण स्तंभ ताज़ा किया जाता है इस प्रकार मैं एक Handsontable है:Handsontable संपादित

ordertable = new Handsontable(container, { 
    data: data, 
    colHeaders: ['Customer', 'Mode', 'Remarks', 'Due', 'Recieved'], 
    columns: [{ 
     data: 2, 
     readOnly: true 
    }, { 
     data: 6, 
     type: 'autocomplete', 
     source: collectionmethod, 
     validator: collectionmethod_validations, 
     strict: true 
    }, { 
     data: 5, 
     readOnly: false 
    }, { 
     data: 4, 
     readOnly: true, 
     type: 'numeric', 
     format: '0.00' 
    }, { 
     data: 3, 
     type: 'numeric', 
     format: '0.00', 
     validator: amt_validations, 
     allowInvalid: true 
    }], 
    minSpareRows: 0, 
    rowHeaders: true, 
    contextMenu: ['row_above', 'row_below', 'remove_row', 'undo', 'redo'], 
    colWidths: [150, 100, rest, 100, 100], 
    autoWrapRow: true, 
    autoWrapCol: true, 
    beforeRemoveRow: removerow_validation 

}); 

मैं एक चेकबॉक्स है। और जब मैं चेकबॉक्स पर क्लिक करता हूं तो Due (चौथा कॉलम) का मान 'प्राप्त' (कॉलम) में पॉप्युलेट किया जाना चाहिए। अगर मैं इसे अनचेक करता हूं तो Received रिक्त होना चाहिए जो टेबल ऑनलोड के समान है।

$("#sel_prefill").click(function() { 
    if ($("#sel_prefill:checked").val()) { 
     var g = $('.htCore').find('tbody tr td:nth-child(5)'); //Due 
     var f = $('.htCore').find('tbody tr td:nth-child(6)') // Recieved 
     g.each(function(i, v) { 
      f.eq(i).text(g.eq(i).text()); 
      $(v).css({ 
       'text-align': 'right' 
      }); 
     }); 
    } else { 
     var g = $('.htCore').find('tbody tr td:nth-child(5)'); //Due 
     var f = $('.htCore').find('tbody tr td:nth-child(6)') // Recieved 
     g.each(function(i, v) { 
      f.eq(i).text(""); 
      //$container.handsontable('setDataAtCell', 1, 4, 5); 
      $(v).css({ 
       'text-align': 'right' 
      }); 
     }); 
    } 
}); 

यह ठीक काम कर रहा है:

मुझे क्या इस प्रकार है।

लेकिन समस्या यह है कि चेकबॉक्स को चेक करने के बाद मान 4 कॉलम का मान 5 वें स्थान पर आ गया है। लेकिन if I edit any cell from 5th column, then the entire column except editted cell gets refreshed and 5th column becomes blank.

मैं इससे कैसे बच सकता हूं।

कदम विवरण द्वारा कदम के लिए तस्वीरें देखें:

STEP 1

STEP 2

STEP 3

मैं संपादन के बाद कोशिकाओं को ताज़ा कैसे बच सकते हैं?

+0

मुझे लगता है कि आपकी समस्या यह 'f.eq (i) .text है (" "); ' – madalinivascu

+0

@madalin ivascu ठीक दोस्त। तो मुझे बदलने की क्या ज़रूरत है? आपका क्या सुझाव है? क्या आप उत्तर के रूप में विस्तृत और पोस्ट कर सकते हैं? यह बहुत उपयोगी होगा। – Santhucool

+0

@ मादालिन इवास्कु जो कोड सुधार का मामला है। मुझे नहीं लगता कि यह ऐसा करेगा क्योंकि इसे संपादित करने के बाद यह फ़ंक्शन बिल्कुल कॉल नहीं कर रहा है। यह फ़ंक्शन में निर्मित कुछ हैंडोंटेबल को कॉल करता है। मुझे इसे इस तरह से संशोधित करने की ज़रूरत है कि इसे मेरी समस्या को संभालना चाहिए। – Santhucool

उत्तर

0

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

यहाँ मेरी समाधान है:

में यदि:

g.each(function(i, v) { 
      f.eq(i).text(g.eq(i).text()); 
      data[i][3] = g.eq(i).text(); //Need to update the array also 
     }); 

बाकी में:

g.each(function(i, v) { 
      f.eq(i).text(""); 
      data[i][3] = ""; //Need to update the array also 
     }); 
संबंधित मुद्दे