मूल बातें को हटाने तो बाद अपडेट नहीं हो:ListView DataTable साथ बाइंडिंग, पंक्ति
mainGrid.SetBinding(Grid.DataContextProperty,
new Binding() {
Source = new DataView()
{ Table = SQLHandler.GetHandler[classType.ToString()] }
}
);
XAML में
:
मैं इस पर एक ListView, जो मेरे ग्रिड के DataContext की आबादी है के साथ एक खिड़की मिल गया है<ListView Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" ItemsSource="{Binding}">
सब ठीक काम करता है, यह आबादी है। जैसा कि आप ऊपर देख सकते हैं, मेरे पास एक SQLHandler क्लास है जिसे सिंगलटन द्वारा एक्सेस किया जा सकता है, और मैं इंडेक्सर के साथ अपनी टेबल तक पहुंच सकता हूं।
समस्या: खिड़की लोड हो रही है, मैं एक पंक्ति का चयन कर रहा हूं, संपादन बटन पर क्लिक कर रहा हूं, नई विंडो लोड हो गई है, जहां मुझे चयनित पंक्ति का विवरण मिलता है। जब मैं इस पंक्ति को इस नई विंडो के माध्यम से हटा देता हूं और इसे बंद करता हूं, तो मुख्य विंडो (जहां पूर्ण डेटाटेबल दिखाया जाता है) तदनुसार अपडेट नहीं किया जाता है। मुझे पता है कि समाधान क्या होना चाहिए, लेकिन मैं इसे काम नहीं कर सकता। (Inotifyproperty SqlHandler वर्ग, Binding.IndexerName आदि के लिए इंटरफ़ेस बदल ..)
यहाँ मुख्य बात यह है: डाटासेट, मेरे SqlHandler कक्षा में नहीं है, यह SqlExecuter, जहाँ मेरे sqlcommands के सभी निष्पादित किया जा रहा में है।
public override DataTable this[string key]
{
get
{
if (sqlExecuter.GetDataSet.Tables.Contains(key))
return sqlExecuter.GetDataSet.Tables[key];
throw new KeyNotFoundException("The specified key was not found");
}
}
जहां GetDataSet है:
public DataSet GetDataSet
{
get { return ds; }
}
मैं कैसे यह काम कर सकते हैं? जब मैं एक अलग विंडो में एक पंक्ति हटा देता हूं और उसे बंद करता हूं, तो मुख्यविंडो की सूचीदृश्य स्वयं अपडेट नहीं होता है। मेरे पास एकमात्र विकल्प है रीफ्रेश बटन डालना, और फिर डेटाकॉन्टेक्स्ट संपत्ति को पुन: स्थापित करना, फिर निश्चित रूप से यह काम कर रहा है, लेकिन मेरा लक्ष्य एक 'लाइव' अपडेट सिस्टम होना है, यही कारण है कि बाध्यकारी सभी के लिए है।
मैंने जो कोशिश की है: SqlExecuter में GetDataSet: inotifypropertychanged इंटरफ़ेस को कार्यान्वित किया, लेकिन कुछ भी नहीं बदला। और मैं SqlHandler में मेरी इंडेक्सर पर लागू किया जा सकता है नहीं किया है INotifyPropertyChanged, क्योंकि यह एक सेटर नहीं है, मैं हमेशा बस से कोड-पीछे टेबल तक पहुँचने कर रहा हूँ, मेरे SqlDataAdapter उन्हें पॉप्युलेट किया जाता है (विधि भरें)
ps : मैं वास्तव में एक अवलोकन करने योग्य चयन बनाने की योजना नहीं बना रहा हूं, क्योंकि मेरे 9 0% कोड को फिर से लिखा जाना चाहिए और जब मैं एक पंक्ति हटा देता हूं, तो मैं अपना डेटासेट साफ़ करता हूं और इसे फिर से भरता हूं, इसलिए मैं इसे हर बदलाव पर ध्यान देने की भी उम्मीद नहीं कर रहा हूं , जब मैं अपने datatable फिर से भरना, मेरे सूचीदृश्य इसके बारे में .. जानते हैं और खुद को ताज़ा