Преобразование webcontrols.ListItem в объект класса
Когда я пытаюсь преобразовать элемент списка в объект, я получаю следующее. "Не удалось преобразовать тип" System.Web.UI.WebControls.ListItem "в" ASPGigManager2.GigOpportunity ""
Есть ли в любом случае вы можете сделать это? Вот мой код:
GigOpportunity gigOpportunity;
gigList.removeGig((GigOpportunity)lstGigs.SelectedItem);
Я попытался обойти весь путь и преобразовать его в строку, но все равно получаю ошибку преобразования строки в GigOpportunity.
GigOpportunity gigOpportunity;
string test;
test = Convert.ToString(lstGigs.SelectedItem);
gigOpportunity = test;
1 ответ
Как говорится, вы не можете конвертировать ListItem в GigOpportunity. А поскольку это ASP.NET, ваш исходный объект больше не существует внутри элемента управления списком. Поэтому во время первоначальной привязки установите для свойства DataValueField уникальное значение, которое идентифицирует каждый концерт (например, первичный ключ).
Затем, при обратном вызове, вы должны снова найти свой оригинальный концерт. Например:
var selectedValue = lstGigs.SelectedValue;
var gig = gigList.Where(x => x.SomeKeyValue == selectedValue).Single();
gigList.Remove(gig);
А еще лучше, превратите ваш gigList в словарь, ключ которого является тем же ключом, который вы использовали в качестве значения. Затем все, что вам нужно сделать, это
gigDict.Remove(lstGigs.SelectedValue);