【问题标题】:Populate DropDownList with ArrayList set Text and Data Fields使用 ArrayList 设置文本和数据字段填充 DropDownList
【发布时间】:2014-08-04 13:19:07
【问题描述】:

我正在尝试使用基于另一个下拉列表的选择的查询数据填充下拉列表。我的第一个查询使用以下代码返回一个 ID 列表:

Dim selectQuery = (From train In trainerEntities.TrainerTrainingCompanies
    Where train.TrainingCompanyID = trainingCompany.ID
    Select train.TrainerID).ToList()

然后我创建一个数组列表和第二个查询

Dim trainers As New ArrayList

For Each trainerID In selectQuery
    Dim selectQuery2 = (From pers In trainerEntities.Persons
                        Where pers.Person_ID = trainerID
                        Select pers.Person_ID, pers.Last_Name).ToList()
    trainers.Add(selectQuery2)
Next

最后我使用arraylist作为数据源并绑定数据

TrainerDropDownList.DataSource = trainers
TrainerDropDownList.DataBind()

列表填充,但没有任何数据。它看起来像这样:

System.Collections.Gerneric.List'1[VB$AnonymousType_0'2[System.Int32,System.String]]

在调试和查看数组列表时,我会看到适当数量的项目以及每个特定项目中的适当信息。从上面查看列表填充的内容,我确定 Int32 值是 Person_ID 以及我想要用于下拉列表值字段的内容,而字符串值是 Last_Name 以及我想要用于下拉列表文本字段的内容。

使用:

dropdownlist.DataTextField("Last_Name") 
dropdownlist.DataValueField("Person_ID")

在数据绑定上产生和错误。

does not contain a property with the name 'trainers.Last_Name'

如何正确使用此数组列表作为下拉列表的数据源

【问题讨论】:

    标签: asp.net vb.net arraylist


    【解决方案1】:

    我重新考虑了如何在 selectQuery2 上收集数据。我没有循环遍历结果,而是将 LINQ 查询的“where”子句更改为我认为的所谓的 lambda 表达式。这允许我使用我的选择查询并匹配人员 ID。

    Dim selectQuery2 = (From pers In trainerEntities.Persons
        Where selectQuery.Any(Function(x) pers.Person_ID.Equals(x))
        Select pers.Person_ID, pers.Last_Name).ToList()
    

    where 子句现在本质上说 select where Person_ID = any original selectQuery results。

    从这里 selectQuery2 可以用作数据源,其中 Last_Name 和 Person_ID 作为文本和值字段。

    TrainerDropDownList.DataSource = selectQuery2
    TrainerDropDownList.DataTextField = "Last_Name"
    TrainerDropDownList.DataValueField = "Person_ID"
    TrainerDropDownList.DataBind()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多