🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: alt.pl.comp.lang.csharp
1 messages
1 total messages Started by GrzybSon Sun, 28 Nov 2010 21:09
PropertyGrid i ustawianie właściwości z listy rozwijanej
#21849
Author: 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
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads