Devex AspxListbox

时间:2013-05-30 15:26:57

标签: asp.net collections devexpress

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

            }
        }

请问好吗?

2 个答案:

答案 0 :(得分:0)

错误明确表示,这是ListEditItem个对象的集合 你无法将它们神奇地转换为无关的ListItem类;你只能将对象强制转换为一个实际上是它的实例的类。

答案 1 :(得分:0)

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

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

List<ListEditItem> newlst = lst.SelectedItems.OfType<ListEditItem>().ToList();