2016-03-29 39 views
0

在我第一次尝试在有用的应用程序中使用DataGridView时,我很高兴地说我能够遇到很多有用的帖子,帮助我构建了一个基本的&函数式应用程序。我的DataGridView目前是一个固定的4列网格,它正在查询来自MySQL数据库的数据。列4必须是超链接类型的列。当我执行下面的代码在第一时间,通过一个按钮,结果正是我期待,我满心欢喜:DataGridView列在清除数据和重新填充列后无法正常工作

Good Execution

获取按钮代码:

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles btn_GetData.Click 
    cnString = "datasource=" + ip + ";username=" + username + ";password=" + password + ";database=" + database_name + "" 
    sqlQRY = "Select * from " + table_name + " WHERE Batch =" + txt_PalletNo.Text + "" 

    If txt_PalletNo.Text = "*" Then 
     sqlQRY = "Select * from " + table_name + "" 
    Else 
     sqlQRY = "Select * from " + table_name + " WHERE Batch =" + txt_PalletNo.Text + "" 
    End If 

    conn = New MySqlConnection(cnString) 

    Try 
     conn.Open() 
     da = New MySqlDataAdapter(sqlQRY, conn) 
     Dim cb As MySqlCommandBuilder = New MySqlCommandBuilder(da) 
     da.Fill(ds, "" + table_name + "") 
     DataGridView1.DataSource = ds 
     DataGridView1.DataMember = "" + table_name + "" 
     txt_qty.Text = DataGridView1.RowCount 
     DataGridView1.DataSource = ds 
     DataGridView1.DataMember = "" + table_name + "" 

    Catch ex As Common.DbException 
     MsgBox(ex.ToString) 
    Finally 
     txt_PalletNo.Clear() 
     conn.Close() 
    End Try 
End Sub 

但是,如果我使用按钮来清除网格并请求一组新的数据,则列属性似乎会发生变化,标题会更改,并且第4列似乎会切换为正常文本列,如下所示:

Bad execution

清除按钮的代码是:

Private Sub btn_Clear_Click(sender As System.Object, e As System.EventArgs) Handles btn_Clear.Click 
    DataGridView1.DataSource = Nothing 
    ds.Clear() 
    DataGridView1.Rows.Clear() 'I also tried Columns.Clear() Here 
    txt_PalletNo.Clear() 
    txt_qty.Clear() 
End Sub 

我需要帮助理解,当我运行填充网格中的第二次或第三次的功能会发生什么。我认为清理数据集并再次运行该函数会每次产生相同的列属性。要谦虚和诚实,这是我第一次使用DataGridView,因此我的知识非常有限。我希望这是一个简单的属性,我没有选择正确。

任何提示将不胜感激。

+1

我不认为这应该是有ds.Clear() – Claudius

+0

从这些症状,我要说的是,你必须使用Designer中定义的列和清除后清除设计师所做的每一项设置。顺便说一句,为什么你用空字符串连接你的table_name变量? – Steve

+0

尝试将'DataGridView1.AutoResizeColumns()'添加到您的加载例程中。 – rheitzman

回答

1

请勿使用ds.clear 您需要创建新的实例。如果妳需要清除DS创建新实例,并再填写

ds = new dataSet 
相关问题