Article View: alt.pl.comp.lang.csharp
Article #21849PropertyGrid i ustawianie właściwości z listy rozwijanej
From: GrzybSon
Date: Sun, 28 Nov 2010 21:09
Date: Sun, 28 Nov 2010 21:09
92 lines
3901 bytes
3901 bytes
Witam,
PropertyGrid to fajna kontrolka, która załatwia za nas mozolne tworzenie
formatek do edycji i podglądu właściwości dowolnego obiektu.
Wszystko jest cool, ale nie mogę obczaić jednego iszjusa, mianowicie mam
klasę płyty:
[Description("Nowa płyta")]
public class NewDVD
{
#region właściwości
[Category("Płyta")]
[Description("Data wypalenia płyty")]
[DisplayName("data")]
public DateTime DataWypalenia
{ get; set; }
[Category("Płyta")]
[Description("Producent płyty")]
[DisplayName("producent płyty")]
[TypeConverter(typeof(VendorConverter))]
public string ProducentPlyty
{ get; set; }
#endregion
public NewDVD()
{
DataWypalenia = DateTime.Now;
}
}
Oczywiście za pomocą property grida można elegancko edytować właściwość
DataWypalenia, ale problem jest z ProducentemPłyty, teraz oczywiście
pokazuję się lista rozwijana (combo) z wypełnioną listą producentów
pobraną z bazy, ale w formi stringów, a tego nie chcę tzn.
ProducentPlyty ma nie być typu string, a poprostu klasą
ProducentPlytyFromDB, który odpowiada wierszowi w bazie danych (ma pola
id i nazwę).
Jak to uzyskać w PropertyGridzie?
Jeszcze wrzucę implementację VendorConvertera używanego dla pola
ProducentPlyty:
public class VendorConverter : TypeConverter
//StringConverter
{
//
-------------------------------------------------------------------------------------------------------------
public override bool
GetStandardValuesSupported(ITypeDescriptorContext context)
//
-------------------------------------------------------------------------------------------------------------
{
//true means show a combobox
return true;
}
//
-------------------------------------------------------------------------------------------------------------
public override bool
GetStandardValuesExclusive(ITypeDescriptorContext context)
//
-------------------------------------------------------------------------------------------------------------
{
//true will limit to list. false will show the list, but
allow free-form entry
return true;
}
//
-------------------------------------------------------------------------------------------------------------
public override StandardValuesCollection
GetStandardValues(ITypeDescriptorContext context)
//
-------------------------------------------------------------------------------------------------------------
{
List<ProducentPlyty> vendors = Repository.GetMediaVendors();
return new TypeConverter.StandardValuesCollection(vendors);
}
}
--
Pozdro,
Maćko
Technical Details
Message-ID:
<icugdl$mb8$1@news.onet.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!news.onet.pl!.POSTED!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!news.onet.pl!.POSTED!not-for-mail From: GrzybSon <grzybsonek@o2.pl> Newsgroups: alt.pl.comp.lang.csharp Subject: PropertyGrid i ustawianie właściwości z listy rozwijanej Date: Sun, 28 Nov 2010 22:09:18 +0100 Organization: http://onet.pl Lines: 93 Message-ID: <icugdl$mb8$1@news.onet.pl> NNTP-Posting-Host: 178.73.63.222 Mime-Version: 1.0 X-Trace: news.onet.pl 1290978549 22888 178.73.63.222 (28 Nov 2010 21:09:09 GMT) X-Complaints-To: niusy@onet.pl NNTP-Posting-Date: Sun, 28 Nov 2010 21:09:09 +0000 (UTC) User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.2.12) Gecko/20101027 Thunderbird/3.1.6 X-Antivirus: avast! (VPS 101128-1, 2010-11-28), Outbound message X-Antivirus-Status: Clean Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit