मैं डेटाग्रिड व्यू में एक सूची बाध्य कर रहा हूं। SomeObject क्लास की एक संपत्ति एक स्टेटस कोड (उदा। लाल, पीला, हरा) होगा। क्या मैं आसानी से सेल के पृष्ठभूमि रंग की स्थिति को "बांध" सकता हूं? टूलटिप को बाध्य करने के बारे में भी?डेटाग्रिड व्यू को बाध्यकारी - क्या सेल के पृष्ठभूमि रंग को "बांधने" का कोई तरीका है?
उत्तर
आप पृष्ठभूमि रंग को अनुकूलित करने के लिए डेटाग्रिड व्यू के सेलफॉर्मेटिंग ईवेंट के लिए हैंडलर लिख सकते हैं। यहाँ एक काम उदाहरण है (यदि आप एक हैंडलर बनाने के लिए डिफ़ॉल्ट प्रपत्र तो CellFormatting घटना पर डबल-क्लिक पर एक DataGridView खींची करने की आवश्यकता होगी):
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private BindingSource _source = new BindingSource();
public Form1()
{
InitializeComponent();
_source.Add(new MyData(Status.Amber, "Item A"));
_source.Add(new MyData(Status.Red, "Item B"));
_source.Add(new MyData(Status.Green, "Item C"));
_source.Add(new MyData(Status.Green, "Item D"));
dataGridView1.DataSource = _source;
dataGridView1.Columns[0].Visible = false;
}
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.ColumnIndex == 1)
{
DataGridView dgv = sender as DataGridView;
MyData data = dgv.Rows[e.RowIndex].DataBoundItem as MyData;
switch (data.Status)
{
case Status.Green:
e.CellStyle.BackColor = Color.Green;
break;
case Status.Amber:
e.CellStyle.BackColor = Color.Orange;
break;
case Status.Red:
e.CellStyle.BackColor = Color.Red;
break;
}
}
}
}
public class MyData
{
public Status Status { get; set; }
public string Text { get; set; }
public MyData(Status status, string text)
{
Status = status;
Text = text;
}
}
public enum Status
{
Green,
Amber,
Red
}
}
वस्तुओं यहाँ सिर्फ सादगी के लिए एक स्थिति और पाठ है । मैं इन ऑब्जेक्ट्स के उदाहरण सेट के लिए बाध्यकारी स्रोत बनाता हूं, फिर डेटाग्रिड व्यू के डेटा स्रोत के रूप में उपयोग करता हूं। डिफ़ॉल्ट रूप से, जब आप बाध्य करते हैं तो ग्रिड स्वचालित रूप से कॉलम उत्पन्न करता है, इसलिए मैन्युअल रूप से ऐसा करने की आवश्यकता नहीं है। मैं पहले कॉलम को भी छुपाता हूं, जो स्टेटस वैल्यू से जुड़ा हुआ है, क्योंकि हम टेक्स्ट सेल को इसके बजाय रंग देने जा रहे हैं।
वास्तव में चित्रकला करने के लिए, हम सेलफॉर्मेटिंग घटना का जवाब देते हैं। हमें प्रेषक को कास्ट करके डेटाग्रिड व्यू का संदर्भ मिलता है, फिर डेटाग्रिड व्यूफेलफॉर्मिंगिंगवेंटवेंट ऑब्जेक्ट की रोविंडेक्स प्रॉपर्टी का उपयोग डेटा आइटम पर प्राप्त करने के लिए करें (प्रत्येक पंक्ति में डेटाबाउंड इटैम प्रॉपर्टी है जो आसानी से हमें यह देती है)। चूंकि DataBoundItem एक ऑब्जेक्ट प्रकार है, इसलिए हमें इसे अपने विशिष्ट प्रकार पर डालना होगा, फिर हम वास्तव में स्थिति संपत्ति को प्राप्त कर सकते हैं ... phew!
मुझे टूलटिप प्रोग्रामिंग के साथ कोई अनुभव नहीं मिला है, लेकिन मैंने सोचा होगा कि आपको MouseHover ईवेंट का जवाब देना चाहिए, फिर यह पता लगाने पर काम करें कि किस पंक्ति को शुरू करने के लिए इंगित किया जा रहा है।
मुझे उम्मीद है कि इससे मदद मिलती है।
अच्छा जवाब - धन्यवाद। – xyz
+1, शानदार उत्तर। मैंने पाया कि आखिरी पंक्ति एक खाली पंक्ति थी, इसलिए यह जांचना था कि माईडाटा शून्य था या नहीं। इसके अलावा, बढ़िया! – Russell
यह बहुत अच्छा काम करता है, केवल सवाल यह है कि सेल के बजाय एक समय में इस पंक्ति को करने का कोई तरीका है या नहीं। बस सोच रहा है कि आपके पास कोई प्रदर्शन है या नहीं 1000+ पंक्तियां, 10+ कॉलम। – Sint
बॉक्स के बाहर, किसी भी डेटाग्रिड व्यू कॉलम डेटासॉर में ऑब्जेक्ट्स की केवल एक संपत्ति के लिए बाध्य किया जा सकता है, प्रत्येक डेटाग्रिड व्यू कॉलम के डेटाप्रॉपर्टी नाम द्वारा दी जा रही संपत्ति का नाम (आपके पास विशिष्ट कॉलम प्रकार होंगे: DataGridViewTextBoxColumn, ...)।
डाटाबेस आइटम के आधार पर सेल की शैली बदलने के लिए आप DataGridView.CellFormatting ईवेंट का उपयोग कर सकते हैं। इस घटना के DataGridViewCellFormattingEventArgs में आपको पंक्ति अनुक्रमणिका मिलती है, वहां से आप वर्तमान ऑब्जेक्ट (पंक्ति का स्रोत) प्राप्त कर सकते हैं। वहां से, आप अपने सेल को प्रभावित करने के लिए ऑब्जेक्ट की किसी भी प्रॉपर्टी का उपयोग कर सकते हैं।
एक अच्छा प्रारंभिक बिंदु (समान विचार): here
एक दूसरा विचार अपनी खुद की DataGridViewColumn प्रकार के विकास और अन्य बातों के आप के लिए बाध्य करने की जरूरत के लिए गुण जोड़ सकता हूँ होगा। उदाहरण के लिए, उसी तरह से इसे DataPropertyName में बनाया गया है, आप अपना खुद का जोड़ सकते हैं: BackgroundColorPropertyName। कस्टम DataGridViewColumns के निर्माण के लिए एक प्रारंभिक बिंदु here पाया जा सकता है।
- 1. सिल्वरलाइट डेटाग्रिड पंक्ति रंग बाध्यकारी
- 2. डेटाग्रिड व्यू सेल
- 3. डेटाग्रिड व्यू सेल
- 4. क्या डेटाग्रिड व्यू चेकबॉक्स सेल को छोटा करने का कोई तरीका है?
- 5. डेटाग्रिड व्यू पंक्ति का पृष्ठभूमि रंग बदल नहीं रहा है
- 6. WPF डेटाग्रिड सेल रंग पूर्व सेल मूल्य
- 7. डेटाग्रिड व्यू से चयनित सेल
- 8. डेटाग्रिड व्यू केवल कोशिकाओं को पढ़ता है
- 9. डेटाग्रिड व्यू सेल के माध्यम से लूपिंग
- 10. डेटाग्रिड व्यू
- 11. डेटाग्रिड व्यू बाध्यकारी सूची में बाध्य नहीं होता है जब मान बदलता है
- 12. क्या सीमा, सीमा-त्रिज्या, और पृष्ठभूमि-रंग सीएसएस गुणों को रीसेट करने का कोई तरीका है?
- 13. डेटाग्रिड व्यू सेल संरेखण काम नहीं करेगा
- 14. डब्ल्यूपीएफ ट्रिगर बाध्यकारी: दृश्यता के लिए एक enum मूल्य बांधने का सबसे अच्छा तरीका क्या है?
- 15. क्या टर्मिनल के पृष्ठभूमि रंग को निर्धारित करने का कोई तरीका है?
- 16. पर्ल में, क्या स्टैस बांधने का कोई तरीका है?
- 17. Jqgrid सेट सेल पृष्ठभूमि रंग
- 18. कस्टमग्रिड के लिए पृष्ठभूमि सेल रंग सेट करने का एक आसान तरीका क्या है?
- 19. डेटाग्रिड व्यू
- 20. डेटाग्रिड व्यू सेल चयन और पूर्णरो चयन
- 21. डेटाग्रिड व्यू
- 22. क्या एक डब्ल्यूपीएफ टूलकिट डेटाग्रिड हाइपरलिंक कॉलम के साथ कमांड को जोड़ने का कोई तरीका है?
- 23. डेटाग्रिड व्यू कम्बोबॉक्स सेल इवेंट सी #
- 24. फ्लेक्स: क्या कॉम्बोबॉक्स के चयनित इटैम को एक चर से बांधने का कोई तरीका है?
- 25. क्या क्यूटी के पास छवि के बाध्यकारी बॉक्स को खोजने का कोई तरीका है?
- 26. स्वचालित कॉलम पीढ़ी के साथ डेटाग्रिड को बाध्यकारी डायनामिक ऑब्जेक्ट?
- 27. डेटाग्रिड व्यू-वैल्यू सहेजा नहीं जाता है यदि सेल
- 28. डेटाग्रिड व्यू वर्तमान चयनित ऑब्जेक्ट
- 29. सी #/.NET डेटाग्रिड व्यू
- 30. डेटाग्रिड व्यू को फ़िल्टर करना जिसमें डेटाबेस
मुझे उम्मीद है कि आपको इसका उत्तर मिल जाएगा, और यह संभव है, मैं इसे समझने में असमर्थ हूं, मैंने प्रत्येक सेल शैली को बदलकर डेटाबेस के बाद पृष्ठभूमि रंग सेट किया है। दुर्भाग्य से यह वास्तव में धीमा है :(डेटाग्रिडव्यू 1। पंक्तियां [1] .ल्स [2]। स्टाइल। बैककॉलर = रंग। रेड –