🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: alt.pl.comp.lang.csharp
Article #21849

PropertyGrid i ustawianie właściwości z listy rozwijanej

#21849
From: GrzybSon
Date: Sun, 28 Nov 2010 21:09
92 lines
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-mail

Show 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