【问题标题】:remove redundant columns in selectable query datagridview删除可选查询数据网格视图中的冗余列
【发布时间】:2013-08-01 09:32:44
【问题描述】:

我的一个 Windows 窗体上有一个 Datagridview,我打算让用户从组合框下拉菜单中选择一个查询,单击一个按钮,然后查询结果将显示在 datagridview 上。

That is all working properly, however when a different query is selected and submitted, the datagridview displays additional empty columns used by the previously selected query.

阻止这种情况发生的最佳方法是什么?这是基于datagridview本身吗?或我的子程序连接到数据库并执行查询

我已经尝试清除数据表(用于查询子程序)和datagridview的列,但这并没有解决问题。

我用按钮清除数据网格视图的各种尝试(尝试了各种组合):

Private Sub btnclearquery_Click(sender As System.Object, e As System.EventArgs) Handles btnclearquery.Click
    mysql.qrydata.Clear()
    DataGridViewqry.DataSource = Nothing
    DataGridViewqry.Columns.Clear()
    DataGridViewqry.Rows.Clear()
End Sub

我执行查询的子程序(在另一个代码文件中引用。当用户从组合框中选择查询时,使用 select case 填充 sqlquery 字符串):

Public qrysqlconn As MySqlConnection
Public qrycommand As New MySqlCommand
Public qryadapter As New MySqlDataAdapter
Public qrydata As New DataTable
Public qrysql As String

Public Sub doquery(ByVal sqlquery As String)
    qrysqlconn = New MySqlConnection
    qrysqlconn.ConnectionString = "server=localhost;" _
        & "user id=root;" _
        & "password=W1nd0ws;" _
        & "database=hystest"
    qrysql = sqlquery
    Try
        qrysqlconn.Open()
        qrydata.Clear()
        qrycommand.Connection = qrysqlconn
        qrycommand.CommandText = qrysql
        qryadapter.SelectCommand = qrycommand
        qryadapter.Fill(qrydata)

        queries.DataGridViewqry.DataSource = qrydata
        queries.DataGridViewqry.FirstDisplayedScrollingRowIndex = queries.DataGridViewqry.RowCount - 1
    Catch myerror As MySqlException
        MessageBox.Show("Database error: " & myerror.Message)
    Finally
        qrysqlconn.Close()
        qrysqlconn.Dispose()
    End Try
End Sub

【问题讨论】:

    标签: mysql sql vb.net datagridview datagridviewcolumn


    【解决方案1】:

    我以前也遇到过这样的问题。
    您可能需要为要显示的每个新视图创建一个新的 DataView 实例以解决此问题:

    Dim dataview As DataView = _ds.YourStuff.DefaultView
    dataview.Stuff
    

    【讨论】:

      【解决方案2】:

      我设法解决了这个问题,或者至少通过为每个查询创建一个单独的子例程/连接/数据表来解决这个问题。所以而不是:

      doquery(sql command)
      

      我用过:

      query1(<parameters>)
      query2(<parameters>)
      ...
      etc
      

      目前这似乎可以正常工作。这意味着问题是基于一遍又一遍地重复使用相同的数据表。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多