Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何按字母表对组合框中的项目进行排序_Vb.net - Fatal编程技术网

Vb.net 如何按字母表对组合框中的项目进行排序

Vb.net 如何按字母表对组合框中的项目进行排序,vb.net,Vb.net,我用这段代码在combo pox中填充搜索结果记录,效果很好 da = New SqlDataAdapter("Select * From MovTable where NameOfMov like '" & AlphaCB.Text & "%'", sqlcon) da.Fill(dt0) SearchResultCbB1.DataSource = dt0 SearchResultCbB1.ValueMember = "NameOfMov" 但

我用这段代码在combo pox中填充搜索结果记录,效果很好

    da = New SqlDataAdapter("Select * From MovTable where NameOfMov like '" & AlphaCB.Text & "%'", sqlcon)
    da.Fill(dt0)
    SearchResultCbB1.DataSource = dt0
    SearchResultCbB1.ValueMember = "NameOfMov"
但我需要一些改变,使组合按字母排序


谢谢

当您将组合框的数据源附加到数据表(
dt0
)时,它实际上附加到表的
.DefaultView
数据视图。这意味着您可以设置视图的
.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
您可以随时更改此排序属性。有关如何使用它的更多信息,请参阅


请不要像在那里那样编写SQL;这是一个巨大的安全漏洞。有关原因的更多信息,请阅读-它还将提供如何预防的建议,但实际上,您应该考虑升级您的知识,以使用实体框架或进行数据访问,并且当您将组合框的数据源附加到数据表(
dt0
)时,再也不要将值连接到SQL字符串中它实际上附加到表的
.DefaultView
数据视图。这意味着您可以设置视图的
.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
您可以随时更改此排序属性。有关如何使用它的更多信息,请参阅


请不要像在那里那样编写SQL;这是一个巨大的安全漏洞。有关原因的更多信息,请阅读-它还将提供有关如何预防的建议,但实际上,您应该考虑升级您的知识,以使用实体框架或进行数据访问,并且不再将值连接到SQL字符串中这是我问题的另一个正确答案

da = New SqlDataAdapter("Select * From MovTable where NameOfMov like '" & AlphaCB.Text & "%' order by NameOfMov ", sqlcon)
我只需要加上一句“莫夫名下的订单”


不需要这么麻烦。

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

da = New SqlDataAdapter("Select * From MovTable where NameOfMov like '" & AlphaCB.Text & "%' order by NameOfMov ", sqlcon)
我只需要加上一句“莫夫名下的订单”


不需要所有这些麻烦。

请始终使用参数来避免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

请始终使用参数以避免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

加载itok时,您应该在
dt0
中对数据进行排序,但我如何才能做到这一点,没有人能回答这个问题,因为您还没有提供在
dt0
中加载数据的代码,您应该将
DisplayMember
设置为要显示的列的名称,并且您应该在查询中有一个
orderby
子句来按该列排序。另外,请始终设置
DataSource
last.ORDER BY必须在代码中,对吗?加载itok时,您应该在
dt0
中对数据进行排序,但我如何才能做到这一点,没有人能回答这个问题,因为您还没有提供在
dt0
中加载数据的代码,您应该将
DisplayMember
设置为要显示的列的名称,并且您应该在查询中有一个
orderby
子句来按该列排序。另外,始终将
数据源设置为last.ORDER BY必须在代码中,对吗?我测试了您的代码,它运行良好!谢谢你的支持我测试了你的代码,效果很好!谢谢你的支持