我在List newlst = lst.SelectedItems.Cast()上收到错误.ToList()** 它说无法将'DevExpress.Web.ASPxEditors.ListEditItem'类型的对象转换为'System.Web.UI.WebControls.ListItem'类型 这是我的代码:
int id = Request.QueryString["id"].ToInt();
ASPxDropDownEdit dde = (ASPxDropDownEdit)FormViewProjectBasicInfo.FindControl("ASPxDropDownEdit1");
ASPxListBox lst = (ASPxListBox)dde.FindControl("listBox");
List<ListItem> newlst = lst.SelectedItems.Cast<ListItem>().ToList();
List<ProjectDependency> dp = DataContext.ProjectDependencies.Where(m => m.MasterProjectID == id).ToList();
for (int i = 0; i < newlst.Count; i++)
{
bool found = false;
for (int j = 0; j < dp.Count; j++)
{
if (dp[j].DependentProjectID==newlst[i].Value.ToInt())
{
break;
}
ProjectDependencyObjectDataSource.InsertParameters["masterprojectid"].DefaultValue =Request.QueryString["id"];
ProjectDependencyObjectDataSource.InsertParameters["dependentprojectid"].DefaultValue =newlst[i].Value;
ProjectDependencyObjectDataSource.Insert();
}
}
请问好吗?
答案 0 :(得分:0)
错误明确表示,这是ListEditItem
个对象的集合
你无法将它们神奇地转换为无关的ListItem
类;你只能将对象强制转换为一个实际上是它的实例的类。
答案 1 :(得分:0)
您收到错误,因为DevExpress的控件与常规ASP.NET控件(ListItem
是其中一部分)是分开的。
根据您在代码中使用newlst
的情况,您无需从原始类型转换项目,因为ListEditItem
具有Value
属性。您只需要使用正确的类型定义您的实例,并在调用OfType()
时使用原始类型(只需获取IEnumerable<T>
):
List<ListEditItem> newlst = lst.SelectedItems.OfType<ListEditItem>().ToList();