C# ASP.NET将列表框项强制转换为自定义类
我有一个已将项目绑定到的列表框,但当我稍后尝试从列表框检索对象时,我得到一个编译器错误。。。有人知道交易是什么吗C# ASP.NET将列表框项强制转换为自定义类,c#,asp.net,listbox,C#,Asp.net,Listbox,我有一个已将项目绑定到的列表框,但当我稍后尝试从列表框检索对象时,我得到一个编译器错误。。。有人知道交易是什么吗 protected void Page_Load(object sender, EventArgs e) { List<Project> projects; DeleteListBox.ItemType = "Project"; DeleteListBox.DataValueField = "projName"; using(DBMet
protected void Page_Load(object sender, EventArgs e)
{
List<Project> projects;
DeleteListBox.ItemType = "Project";
DeleteListBox.DataValueField = "projName";
using(DBMethods db = new DBMethods())
{
//Projects is not null during testing
projects = db.getProjects() as List<Project>;
DeleteListBox.DataSource = projects;
DeleteListBox.DataBind();
}
}
如何在没有编译器错误的情况下将所选列表项强制转换为项目对象?无法通过引用转换将类型“SystemW.Web.UI.WebControl.ListItem”转换为“Project”…无法将ListBox项转换回自定义类,
ListItem
基本上是带有两个字符串的键值对
您必须在列表框中存储与项目
类中的属性匹配的标识符(在本例中为属性ID
)
然后,单击按钮时,循环列表框中的所有列表项,检查选择了哪些项,并在具有Linq
的项目列表中找到正确的项目
protected void PermDelete_Click(object sender, EventArgs e)
{
foreach (ListItem item in DeleteListBox.Items)
{
if (item.Selected)
{
var toDelete = projects.Where(x => x.ID == Convert.ToInt32(item.Value)).FirstOrDefault();
}
}
}
DeleteListBox.DataSource = projects;
DeleteListBox.DataTextField = "Name";
DeleteListBox.DataValueField = "ID";
DeleteListBox.DataBind();
protected void PermDelete_Click(object sender, EventArgs e)
{
foreach (ListItem item in DeleteListBox.Items)
{
if (item.Selected)
{
var toDelete = projects.Where(x => x.ID == Convert.ToInt32(item.Value)).FirstOrDefault();
}
}
}