Combobox i jego wartości

0

witam,

w htmlu mogę napisać tak

<select> <option value="1">jeden</option> </select>

jak w C# zrobić coś takiego aby z wierzchu był jakiś tam napis a po wybraniu tego wartość combo była = jakiemuś int

0

ComboBox.Items

0

zrobiłem coś takiego

            private class Item
            {
                public string Name;
                public int Value;
                public Item(string name, int value)
                {
                    this.Name = name; 
                    this.Value = value;
                }
                public override string ToString()
                {
                    // generuje text widziany w ComboBox
                    return Name;
                }

        }

        public Form1()
        {
            InitializeComponent();
            comboBox1.SelectedIndex = 0;
            comboBox2.SelectedIndex = 0;
            comboBox3.Items.Add(new Item("01 marzec", 76764));
            //comboBox3.SelectedIndex = 0;
        }

gdy robie coś takiego

                adapter.SelectCommand.CommandType = CommandType.StoredProcedure;
                adapter.SelectCommand.Parameters.Add(new SqlParameter("@Data", SqlDbType.Int));
                adapter.SelectCommand.Parameters["@Data"].Value = comboBox3.Text;

i dostaję failed to convert parameter value from a String to a Int32. No nie dziwne bo pod combobox2.text mam "01 marzec" :(

1

ComboBox.Items jest typu ObjectCollection i pozwala przechowywać dowolne obiekty, bo przyjmuje typy object. W ComboBox prezentowane są wartości zwracane przez .ToString() przez obiekt który jest item'em comboboxa.
Ale twój problem nie ma związku z tym, tylko z parametrem procedury. Sam definiujesz że parametr @Data jest typu Int32, więc dlaczego jako jego wartość podajesz obiekt typu string?
Musisz wykonać konwersję/parsowanie tekstu do integera.
Albo wziąć ComboBox.SelectedItem, zrzutować go na swój typ i pobrać właściwość Value.

0

dzięki mashter za Twoją cierpliwość do mnie :)
ale nie wiem jak to skonwertować

próbuję tak

Convert.ToInt32(comboBox3.SelectedItem);

kompiluje się ale jak chce tego użyć spod przycisku dostaję Unable to cast object of type 'Item' to type 'System.IConvertible'.

1

Spróbuj: (comboBox3.SelectedItem as Item).Value
SelectedItem jest typu object, u ciebie przechowuje zaś obiekty typu Item. Wystarczy więc zrzutować i pobrać wartość z pola Value.

0

super, działa jak należy:0 dzięki

chciałby kliknąć "post jako wartościowy" wcześniejszy i ten Pana Kuby jednak nie działa ten wihajster :(

1 użytkowników online, w tym zalogowanych: 0, gości: 1