जिस तरीके से हम इसे संभालते हैं, उसके लिए आगे थोड़ा और काम करने की आवश्यकता होती है, लेकिन इसे वीएस मैक्रोज़ या कोड-जेन टूल्स जैसे कोडस्मिथ का उपयोग करके स्वचालित किया जा सकता है।
हालांकि, यह दृष्टिकोण यूआई में किसी भी यूआई निर्माण के लिए एक्स्टेंसिबल है जिसे संग्रह के लिए बाध्य किया गया है और जब भी आपको पता होना चाहिए कि परिवर्तन हैं या नहीं, तो यूआई में फिर से लागू नहीं किया जाना चाहिए।
अवधारणा संग्रह और व्यापार वस्तु के भीतर झंडे को अद्यतन करने के लिए यह निर्धारित करने के लिए है कि संग्रह सदस्यता बदल गई है या संग्रह के भीतर कोई भी रिकॉर्ड बदल गया है या नहीं।
कार्यान्वयन काफी सरल है:
व्यापार वस्तु वर्ग के लिए एक HasChanged संपत्ति जोड़ें।
संग्रह में कोई भी हटाई गई संपत्ति जोड़ें। यह केवल तभी सेट किया जाएगा जब संग्रह से आइटम हटा दिए जाते हैं।
डीबी से रिकॉर्ड पढ़ने के बाद इन मानों को गलत में आरंभ करें।
(अब अर्ध-थकाऊ हिस्सा) कक्षा में प्रत्येक संपत्ति के लिए, यदि वास्तव में मूल्य बदलता है तो HasChanged संपत्ति को सत्य पर सेट करें। शून्य मूल्यों से सावधान रहें। उदाहरण के लिए:
public bool IsSelected
{
get
{
return m_fIsSelected;
}
set
{
if (m_fIsSelected != value)
{
this.HasChanged = true;
m_fIsSelected = value;
}
}
}
सत्य पर AnyDeleted गुण सेट करने के लिए संग्रह को संशोधित जब एक रिकॉर्ड हटा दी जाती है:
protected override void RemoveItem(int index)
{
this.AnyDeleted = true;
base.RemoveItem(index);
}
अंत में, इंगित करने के लिए किया जाए या नहीं कुछ भी बदल गया है संग्रह के लिए एक विधि जोड़ें। यह तरीका है कि आप यह निर्धारित करने के लिए कॉल करेंगे कि किसी भी बदलाव को सहेजने की आवश्यकता है या नहीं:
public bool HasAnyChanges()
{
// Exceptions are handled by the caller
// If anything was deleted, return true
if (this.AnyDeleted)
{
return true;
}
else
{
foreach (T theItem in this)
{
if (theItem.HasAnyChanges())
{
return true;
}
}
}
return false;
}
स्रोत
2012-01-01 01:10:59
दो सूचीदृश्य नहीं हैं, वास्तव में, केवल एक। – mattsven
आपका प्रश्न सूचीदृश्य के दो संस्करणों को इंगित करता है! तो इसका मतलब क्या है? आपने दो बार तुलना करने के बारे में फिर से उल्लेख किया है! – King
आप कुछ डेटा संरचना जैसे xml या स्ट्रिंग के रूप में रखते हुए सूची में बाध्यकारी हैं और फिर सेटिंग में सहेज रहे हैं? ऐसा है क्या ? @NeXXeuS अगर मैं आपका प्रश्न इस तरह समझता हूं। तब तक जब तक एप्लिकेशन में स्मृति में सेटिंग्स और लगातार अद्यतन नहीं होते हैं, तो आपको सेटिंग्स को पढ़ना होगा और इसे करना होगा। इसे जितना बचा उतना ही। मुझे नहीं लगता कि यह प्रदर्शन के मामले में एक फर्क पड़ता है अगर ऐसा है। – King