【问题标题】:populating dropdown list in vb.net在 vb.net 中填充下拉列表
【发布时间】:2010-02-27 05:50:43
【问题描述】:

我有一个从 sql server 数据库填充的下拉列表。填充列表不是问题,但有谁知道如何填充列表项的值部分。

<asp:dropdownlist id="colors">
<listitem value="1">black</listitem>
<listitem value="2">blue</listitem>
<listitem value="3">orange</listitem>
<listitem value="4">red</listitem>
<listitem value="5">violet</listitem>

当您从数据库中的表中填充时,如何填充 value=1,2,3,4,5?

【问题讨论】:

  • 它是如何重复的?因为它是关于下拉菜单???
  • @casperOne,我不同意,这不是重复的。对于初学者来说,他问的是 VB 而不是 C#,第二个例子是关于从属性中获取 DataTextField,@ugio 的问题是关于从数据库中获取 DataValueField。
  • @rockinthesixstring:是的,差不多就是这样。首先,他所说的不是特定语言。它是 .NET 框架的一部分。其次,他必须以某种方式实现这些结果,这种方式是通过一个数据成员,该成员通过数据集、类型化数据集、LINQ-to-SQL/实体对象等公开。无论如何,问题是关于数据绑定,而不是从数据库中获取值。
  • 我的问题是关于填充 lisitem 中的值。所以谁知道如何使用我拥有的while循环来做到这一点,请解释一下
  • 下拉列表中是否已经填充了值?这就是您要使用循环添加到列表的原因吗?

标签: vb.net drop-down-menu


【解决方案1】:

首先你必须建立你的选择语句

Select [ID], [Value] From [Table]

您可以将您的查询存储到一个变量中(我使用“r”作为返回值) 然后你需要将它附加到下拉列表中

DropDownList1.DataTextField = r.Value
DropDownList1.DataValueField = r.ID
DropDownList1.Databind()

如果你真的需要循环,那么试试这些方法(不是代码没有检查,只是一个一般的想法。)

For Each o as object in r
  DropDownList1.Items.Insert(o.ID,new ListItem(o.Value,o.ID))
Next

或使用 DataReader(同样,未经测试,但非常接近)

While DataReader.Read()
  DropDownList1.Items.Insert(datareader("value"),new ListItem(datareader("name"),datareader("value"))
End While

【讨论】:

  • 这会循环工作吗?我有一个带有while循环的sql datareader。这是当前代码 - sql = "select id, colors from tbl_colors" ... dropdownlist1.items.add = datareader("colors" & "") end while
  • 如果你不需要,我建议不要循环。数据绑定更高效。
  • 嗯,我有很多来自数据库的记录,具体取决于 sql 查询,所以我认为在数据阅读器中循环使用 while 是正确的做法。那么除了更改代码之外没有其他解决方案,或者我可以使用现有的循环吗?
  • 见我上面的编辑。由于我没有坐在 IDE 前,所以它并没有成功,但它已经很接近了。
  • 另一种选择可能是遍历您的记录并将它们添加到您自己的自定义对象中,然后将您的 DropDownList 绑定到自定义对象。
【解决方案2】:

假设您有一个将数据对象绑定到的 IList 实现(您似乎已经在 something 中实现了结果,正如您所说的可以填充文本),您需要什么要做的是在从 IList 实现返回的实例上指定属性/成员的 名称

因此,假设您有一个包含 ID 和 Value 列的 DataTable,或者一个从 LINQ-to-SQL/Entities 填充的对象的 IList,每个都具有一个 ID 属性和一个 Value 属性,您可以这样做:

DropDownList1.DataValueField = "ID"
DropDownList1.DataTextField = "Value"

您需要将其设置为字段的名称而不是 ,因为绑定机制使用属性描述符框架来确定如何将这些字符串映射到属性/列包含数据。

【讨论】:

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