代码之家  ›  专栏  ›  技术社区  ›  SpoiledTechie.com

将带有模板的列表数据绑定到下拉数据源

  •  1
  • SpoiledTechie.com  · 技术社区  · 15 年前

    我有一个模板通过:

    public class OwnedProvinces
    {   public Guid ProvinceID;
        public string ProvinceName;
    }
    

    我用这个模板创建了一个列表:

    List<OwnedProvinces> getinfo = (from upi in db.Utopia_Province_Data_Captured_Gens
                                                where upi.Owner_User_ID == SQLStatementsCS.UserID()
                                                where upi.Province_Name != string.Empty
                                                select new OwnedProvinces { ProvinceName = upi.Province_Name, ProvinceID = upi.Province_ID}).ToList();
    

    当我试图将其绑定到下拉列表时,出现了如下问题:

      ddlSelectProvince.DataTextField =   "ProvinceName";
                    ddlSelectProvince.DataValueField = "ProvinceID";
                    ddlSelectProvince.DataSource = getinfo;
                    ddlSelectProvince.DataBind();
    

    它抛出错误:

    数据绑定:“OwnedProvisions”不包含名为“ProvinceName”的属性。

    基本上,它在列表中找不到属性provincename,但对我来说毫无意义。如果我执行匿名查询,它会工作,但是当我将它分配给类ownedProvisions时,它会抛出这个错误…

    2 回复  |  直到 15 年前
        1
  •  2
  •   Branislav Abadjimarinov Ivan Choo    15 年前

    试着像这样改变课堂

    public class OwnedProvinces 
    {   
        public Guid ProvinceID { get; set; } 
        public string ProvinceName { get; set; }
    } 
    

    问题是provinceid和provincename是成员变量,而不是属性。

        2
  •  1
  •   VMAtm    15 年前

    你的声明有问题-

    public Guid ProvinceID;      
    public string ProvinceName;      
    

    是字段,但不是属性。您应该更改它们的定义,或者尝试实现IDatabindable接口,如下所述: http://www.primaryobjects.com/CMS/Article95.aspx

        #region IDataBindable Members
    
        public List<NameValueType> ToList()
        {
            List<NameValueType> resultList = new List<NameValueType>();
    
            using (DataContext context = new DataContext())
            {
                List<Monster> itemList = context.Monsters.ToList();
                foreach (Monster item in itemList)
                {
                    resultList.Add(new NameValueType(item.MonsterId.ToString(), item.Name));
                }
            }
    
            return resultList;
        }
    
        #endregion