मैं रिकॉर्ड एक विशिष्ट इसके साथ जुड़े झंडा है या नहीं बतलाने के लिए DataGridView सेल में एक छवि दिखाने के लिए एक नया आवश्यकता के साथ एक मौजूदा अनुप्रयोग है (नहीं उपयोगकर्ता से आबादी संपादन योग्य, यह डीबी से आता है)।DataGridView छवि स्तम्भ में व्यर्थ छवि को अक्षम कैसे करें जब DataTable
यदि कोई ध्वज है, तो मैं इसी छवि को दिखाता हूं, और यदि कोई ध्वज नहीं है, तो मुझे कॉलम में कुछ भी दिखाना नहीं है।
विजुअल स्टूडियो डिजाइनर में DataGridView कॉलम नहीं बनाए गए थे, अन्यथा यह आसान होगा। मैं सिर्फ कॉलम पर NullValue संपत्ति सेट कर सकता था। इसके बजाय कॉलम रनटाइम पर बनाए जाते हैं जब सभी डेटा डेटाटेबल में लोड होते हैं, और फिर उस डेटाटेबल से डेटाव्यू बनाया जाता है, और फिर DataGridView के डेटासोर्स को डेटा व्यू पर सेट किया जाता है।
मैं इसे पूरी तरह से फिर से लिख नहीं सकता, या अन्यथा मैं डेटाटेबल से स्तंभों को परिभाषित करने के इस हास्यास्पद तरीके के बजाय वीएस डिजाइनर में कॉलम को परिभाषित करता हूं।
मेरा प्रश्न तो, मैं कैसे कर सकते हैं यह बहुत छवियों के साथ स्तंभ में कुछ भी नहीं पता चलता अंतर्निहित डेटा तालिका एक अशक्त है जब है?
यहां कुछ छद्म सी # है जो मेरा मतलब है इसका प्रदर्शन करने के लिए। याद रखें, मैंने इसे इस तरह के दो डेटाटेबल्स का उपयोग करने के लिए नहीं लिखा; जब मैं यह मेरे लिए सौंप दिया था इसे उस तरह से था, और मैं भारी बदलाव सिर्फ एक नया स्तंभ जोड़ना बनाने के लिए नहीं चाहता ...
DataTable rawData = someMethodThatReturnsMyRawData();
DataTable data = new DataTable();
data.Columns.Add("Flags", typeof(Image));
data.Columns.Add("SomeOtherColumn");
foreach (DataRow rawDataRow in rawData.Rows)
{
DataRow dataRow = data.NewRow();
bool hasFlagType1 = false;
bool hasFlagType2 = false;
if (rawDataRow["FlagType1ID"] != DBNull.Value)
{
hasFlagType1 = true;
}
if (rawDataRow["FlagType2ID"] != DBNull.Value)
{
hasFlagType2 = true;
}
if (hasFlagType1 && hasFlagType2)
{
dataRow[0] = Properties.Resources.BothFlagsImage;
}
else if (hasFlagType1)
{
dataRow[0] = Properties.Resources.FlagType1Image;
}
else if (hasFlagType2)
{
dataRow[0] = Properties.Resources.FlagType2Image;
}
else
{
//If neither flag set, I don't want it to show anything,
//but if I leave it as null, a little box with an X in it shows up
//I could set it to some transparent GIF here, but that seems lame
}
dataRow[1] = rawDataRow["SomeOtherColumn"];
data.Rows.Add(dataRow);
}
DataView dv = new DataView(data, string.Empty, "SomeOtherColumn ASC", DataViewRowState.CurrentRows);
this.emptyDataGridViewFromDesigner.DataSource = dv;
// How can I modify the column "Flags" at this point to show nothing if the value is null?
संपादित करें: यहाँ एक स्क्रीनशॉट, ताकि आप देख सकते हैं कि मैं क्या मतलब है एक एक्स के साथ छोटे से बॉक्स से - उन सभी nulls रहे हैं ...
इसके अलावा, यह वहाँ .NET 4.0 में एक समाधान केवल, मैं से बाहर हूँ अगर ऐसा है, .NET 3.5 हो गया है भाग्य।
मैं वीबी.नेट में ऐसा कैसे कर सकता हूं? = कुछ भी नहीं है मुझे लगता है? –
मैं इस समाधान अंतिम पंक्ति के लिए काम नहीं किया है – camino