У меня есть пользовательская библиотека управления, которую я использую, и я добавил свойство, называемое DataCodeField
, которое действует почти так же, как DataTextField
для элемента управления, который наследует от ComboBox
.Привязать свойство к настраиваемому элементу управления
DummyData data1 = new DummyData(12, "Jon", 1);
DummyData data2 = new DummyData(15, "Bill", 2);
DummyData data3 = new DummyData(23, "Ted", 1);
var people = new List<DummyData>{data1, data2, data3};
ddlTest.DataSource = people;
ddlTest.DataTextField = "Name";
ddlTest.DataCodeField = "Age";
ddlTest.DataValueField = "Id";
ddlTest.DataBind();
var id = ddlTest.SelectedValue;
var index = ddlTest.SelectedIndex;
var name = ddlTest.SelectedItem;
var age = ??
Мне нужно найти совершеннолетнее лицо, когда я обвил его к новому DataCodeField
. Я знаю, что мне нужно переопределить событие OnDataBinding
, чтобы сделать это, но я не могу найти, с чего начать. Любая помощь будет оценена по достоинству. Моя конечная цель - получить доступ к возрасту, подобному этому после того, как combobox был привязан к базе данных.
В качестве альтернативы, есть ли способ получить доступ к связанному источнику данных, а затем получить доступ к возрасту от этого объекта на основе selectedIndex?
Не уверен, что это помогает, но каков тип элемента управления в то время, когда вы пытаетесь получить значения из 'ddlTest'? Если это не тот тип, который вы изначально определили, возможно, вы хотите применить его в своем типе. – MilkyWayJoe
Я не эксперт, но когда вы привязываете данные к DDL, он не должен быть в паре (имя, значение), иначе это даст вам ошибку. Ваш код кажется прекрасным, за исключением того, что я указал выше. –
Это правильный тип. Это связано с извлечением объекта из связанного источника данных. – joncodo