【问题标题】:how to sorting item in combo box by Alphabet如何按字母对组合框中的项目进行排序
【发布时间】:2020-03-28 06:48:18
【问题描述】:

我使用此代码填充组合框中的搜索结果记录,并且效果很好..

    da = New SqlDataAdapter("Select * From MovTable where NameOfMov like '" & AlphaCB.Text & "%'", sqlcon)
    da.Fill(dt0)
    SearchResultCbB1.DataSource = dt0
    SearchResultCbB1.ValueMember = "NameOfMov"

但我需要进行一些更改以使组合痘按字母排序

谢谢

【问题讨论】:

  • 加载时应该对dt0中的数据进行排序
  • 好的,但我该怎么做
  • 好吧,没有人能回答这个问题,因为您还没有提供在dt0中加载数据的代码
  • 您应该将DisplayMember 设置为要显示的列的名称,并且您的查询中应该有一个ORDER BY 子句以按该列排序。另外,请始终将DataSource 设置在最后。
  • ORDER BY 必须在代码中吧?

标签: vb.net


【解决方案1】:

当您将 ComboBox 的数据源附加到数据表 (dt0) 时,它实际上附加到表的 .DefaultView DataView。这意味着您可以设置视图的.Sort 属性来对组合进行排序:

dt0.DefaultView.Sort = "[NameOfMov] ASC";
SearchResultCbB1.DisplayMember = "NameOfMov" 'this shows in the combo
SearchResultCbB1.ValueMember= "ID" 'you probably want an ID, not the movie name, for this
SearchResultCbB1.DataSource = dt0

您可以随时更改此排序属性。有关您可以用它做什么的更多信息,请参阅the documentation

请不要像以前那样编写 SQL;这是一个巨大的安全漏洞。有关原因的更多信息,请阅读http://bobby-tables.com - 它还将提供有关如何防止它的建议,但实际上您应该考虑升级您的知识以使用实体框架或Dapper 进行数据访问,并且再也不会,曾经将一个值连接到一个 SQL 字符串中

【讨论】:

    【解决方案2】:

    始终使用参数以避免 sql 注入并使您的 sql 查询字符串更易于编写。我不得不猜测参数的数据类型和大小。请检查您的数据库中的实际值并调整代码。

    在关闭数据库对象并使用Using...End Using 块处理后,用户界面会更新。

    Private Sub OPCode()
        Dim dt0 As New DataTable
        Using sqlcon As New SqlConnection("Your connection string"),
                da As New SqlDataAdapter("Select * From MovTable where NameOfMov like @Name Order By NameOfMov;", sqlcon)
            da.SelectCommand.Parameters.Add("@Name", SqlDbType.NVarChar, 400).Value = AlphaCB.Text & "%"
            da.Fill(dt0)
        End Using
        SearchResultCbB1.DataSource = dt0
        SearchResultCbB1.DisplayMember = "NameOfMov"
        SearchResultCbB1.ValueMember = "MovieID" 'The Primary Key field in you Database
    End Sub
    

    【讨论】:

    • 我测试了你的代码,它运行良好!感谢您的支持
    【解决方案3】:

    这是我问题的另一种正确答案

    da = New SqlDataAdapter("Select * From MovTable where NameOfMov like '" & AlphaCB.Text & "%' order by NameOfMov ", sqlcon)
    

    我所需要的只是这一项“按 NameOfMov 排序”

    不需要这么麻烦。

    【讨论】:

      猜你喜欢
      • 2010-10-26
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-22
      相关资源
      最近更新 更多