将webcontrols.ListItem转换为类的对象

时间:2014-04-15 22:20:27

标签: c# asp.net type-conversion

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

答案 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);