0

我在 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();

            }
        }

请问有什么想法吗?

4

2 回答 2

0

正如错误明确指出的那样,这是ListEditItem对象的集合。
您不能神奇地将它们转换为不相关的ListItem类;您只能将对象转换为实际上是其实例的类。

于 2013-05-30T15:31:06.000 回答
0

ListItem您收到错误是因为 DevExpress 的控件与常规的 ASP.NET 控件(它是其中的一部分)是分开的。

根据您newlst在代码中的使用情况,您无需将项目从其原始类型转换为ListEditItem具有Value属性。您只需要使用正确的类型定义您的实例并在调用中使用原始类型OfType()(仅需要获取IEnumerable<T>):

List<ListEditItem> newlst = lst.SelectedItems.OfType<ListEditItem>().ToList();
于 2013-05-30T15:51:26.260 回答