【问题标题】:Getting checkboxList values as per selected category from parent checkboxList根据从父 checkboxList 中选择的类别获取 checkboxList 值
【发布时间】:2016-07-25 14:06:25
【问题描述】:

我正在尝试从数据库中获取复选框列表(正在工作)。页面上有两个复选框列表:第一个在页面加载时获取,第二个从第一个复选框列表中获取选定的值。当我第一次从第一个 checkboxList 中选择时,这也有效。但是当我从第一个 checkboxList 中选择第二个值时,字符串的结构就像这样

('Value1','Value2" & vbLf & "')

它应该是这样的字符串

('Value1','value2')

现在我不明白这是什么& vbLf &

Dim joiner As String = ""
Dim whereClause As String = String.Empty
Dim categoryCondition As String = String.Empty

For i = 0 To categoryFilter.Items.Count - 1
    If categoryFilter.Items(i).Selected Then
        Dim category As String = categoryFilter.Items(i).ToString
        categoryCondition = String.Concat(categoryCondition, joiner, String.Format("'{0}'", category))
        If joiner = "" Then joiner = ","
    End If
Next

【问题讨论】:

  • 您确定上面显示的代码中正在生成换行符吗?
  • 您正试图以一种非常复杂的方式将项目连接在一起。查看Enumerable.Aggregate
  • @AndrewMortimer 你说得对,我的表格数据行有问题,因为我从 excel 中粘贴了它们,并且在某些行中有一些空白行..

标签: asp.net vb.net


【解决方案1】:

使用内置功能获取选中项并将字符串与 LINQ 连接

  1. 从控件中获取选中项 (categoryFilter.CheckedItems)
  2. 将它们转换为字符串 (Cast(Of String)())
  3. ' 分别放在它们周围 (Select())
  4. , (Aggregate()) 一起加入他们

代码:

Dim categoryCondition As String = Me.categoryFilter.CheckedItems.
    Cast(Of String)().
    Select(Function(i1) String.Format("'{0}'", i1)).
    Aggregate(Function(i1, i2) String.Format("{0}, {1}", i1, i2))

如果换行符仍然存在,它很可能存在于CheckedListBox 项目本身中。你说那来自你的数据库,所以也许那是(不工作)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多