当我尝试将列表项转换为对象时,我得到以下内容。 "无法转换类型' 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;
答案 0 :(得分: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);