vb.net:为什么我的datagridview坚持组合2个不同的sql搜索?

时间:2014-06-24 11:27:14

标签: mysql vb.net datagridview

如果不满足这两种情况,此代码块可以正常工作。不幸的是,如果在程序的同一实例运行中满足两种情况,则搜索的两列被组合或递增。但结果并没有结合。只是列。例如:Case" Server"将有A1,A2,A3列无论我通过案例服务器运行多少次,它都会很好。但如果我运行病例"患者",我的列现在将是A1,A2,A3,B1,B2,B3。如果我运行案例患者然后案例服务器,它会是相同的,但列将是不同的顺序。

Private Sub frmSearch_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    With dgvSearch
        dt.Clear()
        .DataSource = Nothing
        .Columns.Clear()
        .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill 'this does not allow resizing of column width
        Select Case formSwitch
            Case "Server"
                sql = "Select cnn, server, port, uid, detail from tbl_cnnstrings"
                SelectQuery(lcnn, 3)
                .DataSource = dt
                .Columns(0).HeaderText = "Connection Name"
                .Columns(1).HeaderText = "Server"
                .Columns(2).HeaderText = "Port"
                .Columns(3).HeaderText = "Uid"
                .Columns(4).HeaderText = "Detail"

                Try     'this code block resizes column and bypass error
                    .Columns(2).Width = 50
                Catch ex As Exception

                End Try
            Case "Patients"
                sql = "Select concat(patientid_yr, '-', patientid_m, '-', patientid_no) as patientid, concat_ws(' ', lname, ',', fname, ' ', mname) as name from tbl_patinfo order by name;"
                SelectQuery(cnn, 3)
                .DataSource = dt
                .Columns(0).HeaderText = "Patient ID"
                .Columns(1).HeaderText = "Patient Name"
                Try     'this code block resizes column and bypass error
                    .Columns(0).Width = 100
                Catch ex As Exception

                End Try
        End Select

    End With
End Sub

我的理论是我没有正确清理数据表。 仅供参考:dt =数据表,da = mysqldataadapter,SelectQuery = mysql连接和查询的自定义子。 lcnn和cnn只是连接字符串。 样本输出: http://i58.tinypic.com/30jkwb9.png

3 个答案:

答案 0 :(得分:1)

网格不会自动删除任何列。它会自动添加新列,但您必须手动删除它们。如果您要更改数据源,请先将DataSource设置为Nothing,然后将Clear Columns集合设置为DataSource,然后再次设置{{1}}。

答案 1 :(得分:0)

在每种情况下放置dt.clear()而不是在case语句之外,或者我会为每个查询设置不同的数据和命令,试一试,如果我没有任何帮助,我很抱歉...

答案 2 :(得分:0)

dt = New Datatable

我发现了自己的错误。显然我每次使用它时都必须声明我的数据表是新的。否则,里面的数据将继续附加。