0

嗨,我再次被困在中间,我需要一些指针……我需要一种方法在 for 循环中填充数据网格……

Dim rs As SqlCommand
Dim dt As New DataTable
For Each line As String In RichTextBox1.Lines
query = "myquery '" & RichTextBox1.Lines(i).ToString & "'"
rs = New SqlCommand(query, Module1.dtsrv_conn)
dt.load(rs.Executereader)
        If i < 1 Then
            DataGridView1.DataSource = dt                
        Else
            datagridview1.rows.Add(rs.ExecuteReader)
        End If
        i = i + 1
    Next

多行文本将输入到 RichTextBox 中,每一行都需要与数据库中的值进行比较,结果表需要显示在 datagrid 中...我尝试将新查询的行直接添加到 datagrid 但它抛出异常所以我尝试了将新行添加到数据表并稍后加载数据网格,但我找不到方法....

4

1 回答 1

0

如果我理解您不太清楚的问题,则用户正在输入您要针对数据库中的行查询的值,如果它们存在,则显示一些相应的数据或消息。

听起来您想要做的是将数据网格绑定到数据源,在我的示例中是内存数据表,然后通过 DataGridView1.CellFormatting 拦截数据绑定以相应地比较/修改您的数据。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Dim sqlConnection As SqlConnection
    Dim sqlConnectionString As String = "YourConnectionString"
    Dim sqlDataAdapter As SqlDataAdapter
    Dim dataTable As New DataTable
    Dim sqlCommand As SqlCommand
    Dim sqlString As String
    Try
        sqlString = "SELECT * FROM YourTable" 'if user input values are filters, loop through and append them in WHERE clause
        sqlConnection = New SqlConnection(sqlConnectionString)
        sqlCommand = New SqlCommand(sqlString, sqlConnection)
        sqlConnection.Open()
        sqlDataAdapter = New SqlDataAdapter(sqlCommand)
        sqlDataAdapter.Fill(dataTable)
        sqlConnection.Close()

        DataGridView1.DataSource = dataTable

    Catch ex As Exception
        'Handle error
    End Try

End Sub

Private Sub DataGridView1_CellFormatting(sender As Object, e As DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting

    If Me.DataGridView1.Columns(e.ColumnIndex).Name = "YourColumnNameToCompare" Then
        If e.Value IsNot Nothing Then
            'do your comparison to user input text here and if necassary change the value like so..
            For Each line In RichTextBox1.Lines
                If line = e.Value Then
                    e.Value = "Value modified"
                    Exit For
                End If
            Next

            e.FormattingApplied = True
        End If
    End If
End Sub
于 2013-08-06T19:48:23.240 回答