【发布时间】:2018-08-01 05:09:10
【问题描述】:
我在一个列表框中有一个学生姓名列表,(studentList)我单击框中的一个姓名并获取所有学生的详细信息,即姓名、课程、学科等。然后代码从数据库中获取详细信息(在我的情况下它是访问)然后将其显示在数据网格视图中。 如果我只从一个(或全部)List Boxes 中选择一项,则代码可以正常工作。我的问题是,我可以为每个 LitsBox 选择一个以上的项目吗。我知道我可以使用 SelectedMode 属性来允许突出显示,但不会绘制所需的来自数据库的数据。这是我正在使用 vb.10 的代码
`Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim con As New OleDb.OleDbConnection
Dim dbProvider As String
Dim dbSource As String
Dim ds As New DataSet
Dim tables As DataTableCollection = ds.Tables
Dim source1 As New BindingSource()
Dim da As New OleDb.OleDbDataAdapter
dbProvider = "PROVIDER=Microsoft.ACE.OLEDB.12.0;"
dbSource = "Data Source = C:\Documents and Settings\Desktop \studentmarks.accdb"
con.ConnectionString = dbProvider & dbSource
con.Open()
Dim isFirstColumn As Boolean = True
Dim student As String = ""
Dim course As String = ""
Dim grade As String = ""
Dim x As String = studentList.Text
Dim y As String = courseList.Text
Dim z As String = gradeList.Text
Dim defaultSQL As String = "SELECT * FROM studentfile "
If studentList.SelectedIndex > -1 Then
If isFirstColumn Then
student = "WHERE student = '" & x & "' "
Else
student = "AND student = '" & x & "' "
End If
isFirstColumn = False
End If
If courseList.SelectedIndex > -1 Then
If isFirstColumn Then
course = "WHERE course = '" & y & "' "
Else
course = "AND course = '" & y & "' "
End If
isFirstColumn = False
End If
If gradeList.SelectedIndex > -1 Then
If isFirstColumn Then
grade = "WHERE grade = '" & z & "' "
Else
grade = "AND grade = '" & z & "' "
End If
isFirstColumn = False
End If
Dim sql As String = defaultSQL & student & course & grade
da = New OleDb.OleDbDataAdapter(sql, con)
da.Fill(ds, "topclass")
Dim view1 As New DataView(tables(0))
source1.DataSource = view1
DataGridView1.DataSource = view1
DataGridView1.Refresh()
DataGridView1.DataSource = view1
DataGridView1.Refresh()
Dim cnt As Integer
cnt = DataGridView1.Rows.Count
TextBox1.Text = cnt - 1
Dim dayclass As String = TextBox1.Text
TextBox8.Text = dayclass
con.Close()
End Sub`
非常感谢 灰色
【问题讨论】:
-
在列表框中进行多选是没有意义的。您如何确定哪个学生参加了哪个课程和哪个年级?
-
嗨,玛丽,我们的想法是,您可以在学生列表中选择 2 个学生并获取他们的所有详细信息,剩下的就是通过程序创建的动态 sql 代码灰猫