मैं एक फ्लेक्स
एप्लिकेशन में एक सूची/ग्रिड नियंत्रण बना रहा हूं और इसे .NET
वेब एप्लिकेशन में उपयोग कर रहा हूं। वास्तव में एक लंबी कहानी बनाने के लिए मुझे धारावाहिक वस्तुओं के एक webservice से एक्सएमएल मिल रहा है। मेरे पास पृष्ठ की सीमा है कि पेज पर कितनी चीजें हो सकती हैं। मैंने डेटा ग्रिड लिया है और इसे पेज बनाया है, पेजों में सॉर्ट किया है, और कुछ बुनियादी फ़िल्टरिंग को संभाला है।
पेजिंग के संबंध में मैं पृष्ठ पर कुंजीपटल एक शब्दकोश का उपयोग कर रहा हूं और उस पृष्ठ के लिए एक्सएमएल संग्रहीत कर रहा हूं। इस तरह जब भी कोई उपयोगकर्ता उस पृष्ठ पर वापस आ जाता है जिसे मैंने इस शब्दकोश में सहेजा है, तो मैं webservice को मारने के बजाय एक्सएमएल को स्थानीय मेमोरी से पकड़ सकता हूं। असल में, मैं प्रत्येक कॉल से डेटा के पृष्ठ के लिए webservice पर पुनर्प्राप्त डेटा कैशिंग कर रहा हूं।
ऐसी कई चीजें हैं जो मेरे कैश की समयसीमा समाप्त कर सकती हैं। फ़िल्टरिंग और सॉर्टिंग मुख्य कारण हैं। हालांकि, कोई उपयोगकर्ता एक संपादक खोलकर ग्रिड में डेटा की एक पंक्ति संपादित कर सकता है। वे जो डेटा संपादित करते हैं वह पंक्ति में प्रदर्शित डेटा को बाँधने का कारण बन सकता है। मैं आसानी से webservice पर जा सकता हूं और डेटा का पूरा पृष्ठ प्राप्त कर सकता हूं, लेकिन चूंकि पेज का आकार रनटाइम पर सेट होता है, इसलिए मैं पुनर्प्राप्ति के लिए बड़ी मात्रा में रिकॉर्ड्स देख सकता हूं।
तो अब मुझे उस मुद्दे के दिल में आने दो जो मैं अनुभव कर रहा हूं। डेटा के पूरे पृष्ठ को वापस पाने से रोकने के लिए मैं पूरी तरह से अपडेट किए गए रिकॉर्ड (संपादक अपने डेटा को सहेजने वाले हैंडल) के लिए पूछने वाले webservice पर कॉल करता हूं।
चूंकि मैं कस्टम ऑब्जेक्ट्स का उपयोग कर रहा हूं, इसलिए मुझे उन्हें सर्वर पर एक्सएमएल में क्रमबद्ध करने की आवश्यकता है (यह पहले से ही हमारे सॉफ़्टवेयर के अन्य हिस्सों के लिए संभाला जाता है)। सभी डेटा को एक्स 4 एक्स में एक्सएमएल के माध्यम से संभाला जाता है। शब्दकोश में कैश को XMLList के रूप में संग्रहीत किया जाता है।
अब मुझे अपना कोड दिखाएं ...
var idOfReplacee:String = this._WebService.GetSingleModelXml.lastResult.*[0].*[0][email protected];
var xmlToReplace:XMLList = this._DataPages[this._Options.PageIndex].Data.(@Id == idOfReplacee);
if(xmlToReplace.length() > 0)
{
delete (this._DataPages[this._Options.PageIndex].Data.(@Id == idOfReplacee)[0]);
this._DataPages[this._Options.PageIndex].Data += this._WebService.GetSingleModelXml.lastResult.*[0].*[0];
}
असल में, मुझे उस नोड की आईडी मिलती है जिसे मैं प्रतिस्थापित करना चाहता हूं। फिर मुझे इसे कैश की डेटा प्रॉपर्टी में मिलता है ( XMLList
)। मैं सुनिश्चित करता हूं कि यह दूसरी पंक्ति पर फ़िल्टर XMLList
लौटाता है।
मेरी समस्या है डिलीट लाइन के साथ है। मैं उस पंक्ति को उस नोड को सूची से हटा नहीं सकता। डिलीट लाइन के बाद की रेखा काम करता है। मैंने सूची में नोड जोड़ा है।
मैं उस नोड को कैसे प्रतिस्थापित या हटा सकता हूं (जिसका मतलब है कि नोड जो मुझे कैश की डेटा संपत्ति से फ़िल्टर स्टेटमेंट से मिलता है) ???
Hopefully the underscores for all of my variables do not stay escaped when this is posted! otherwise this._ == this
._