You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF DataGrid实现刷新按钮 解决绑定MySQL数据重复及操作报错问题

问题原因

  1. 数据重复是因为你代码中的sqlData为全局DataTable对象,MySqlDataAdapter的Fill方法默认会在原有数据基础上追加新查询到的记录,不会主动清空旧数据,每次点击刷新都会重复插入全表数据,最终导致列表重复。
  2. 调用Items.Clear()报错是因为当DataGrid设置了ItemsSource绑定数据源后,控件条目完全由后台数据源控制,禁止直接修改UI层的Items集合,所有增删改操作都需要针对绑定的数据源执行。

解决方法

只需要在每次查询填充数据前,先清空sqlData中存储的旧数据即可,同时建议用Using块管理数据库相关对象,避免异常时出现连接泄漏问题。修正后的代码如下:

' 先清空旧数据,解决重复问题的核心步骤
sqlData.Clear()

' Using块会在代码执行结束后自动释放连接、命令、适配器资源,无需手动调用Close
Using con As New MySqlConnection("server =" + server + ";" + "user id=" + username + ";" + "password= " + password + ";" + "database =" + database)
    con.Open()
    Using cmd As New MySqlCommand("select * from suspects_arrests", con)
        Using sqlAdap As New MySqlDataAdapter(cmd)
            sqlAdap.Fill(sqlData)
        End Using
    End Using
End Using

DataSuspects.ItemsSource = sqlData.DefaultView

补充说明

如果清空数据源后UI没有自动刷新,可在赋值前加一行DataSuspects.ItemsSource = Nothing先解除旧绑定再重新赋值即可,不需要调用Items.Refresh方法。

内容的提问来源于stack exchange,提问作者Никита

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 16:54:02