在 WinForms 中更新 BindingSource 不会更新数据源集合

2024-03-21

我想在中显示自定义集合DataGridView在 Windows 窗体应用程序中。这个自定义集合实现了ICollection, and IEnumerable。我已经设置了一个BindingSource,使用集合作为 .DataSource 属性。这DataGridView设置为使用我的BindingSource因为它是数据源。当我使用以下命令将新项目添加到集合中时BindingSource.Add()方法,将DataGridView使用新项目正确更新。这BindingSource另一方面,DataSource 不会:

MyCustomCollection myCollection = new MyCustomCollection();

myCollection.Add(myCustomObject1);
myCollection.Add(myCustomObject2);

myBindingSource.DataSource(myCollection);
myBindingSource.Add(myCustomObject3);

在上面的代码中,myBindingSource 的内部 List 包含正确数量的记录 (3),并且DataGridView也包含三个记录,但 myCollection 仅包含两个记录。我知道更改底层 myCollection 不会更新BindingSource or the DataGridView,因为它不是一个BindingList<T>,但我的印象是更新BindingSource直接将确保 myCollection 同时更新。

有没有办法使用不是集合的集合BindingList<T>并在与交互时更新它BindingSource直接地?

Update:我在所有部分(Collection、BindingSource、DataGridView)中更新数据的一种方法如下:

myCollection.Add(myCustomObject3);
myBindingSource.DataSource = null;
myBindingSource.DataSource = myCollection;

我很确定有更好的方法来解决这个问题,但这是产生我期望的结果的唯一方法。


问题是填充Adaptor。当您加载表单时,Fill已为您完成。 只需确保进行重新填充,然后在任何数据更改后重置绑定,网格就会刷新。

例子 :

WorkTableAdapter.Insert(objData.XAttribute, "",
  objData.YAttribute,objLoanData.Amount_IsValid, DateTime.Now, DateTime.Now);
this.WorkTableAdapter.Fill(this.POCDataSet.Work);
this.WorkBindingSource.ResetBindings(false);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 WinForms 中更新 BindingSource 不会更新数据源集合 的相关文章

  • Accept() 是线程安全的吗?

    我目前正在用 C 语言为我正在做的课程编写一个简单的网络服务器 我们的一项要求是实现一个线程池来使用 pthread 处理连接 我知道我将如何粗略地执行此操作 在主线程中调用accept并将文件描述符传递给freee线程 但是我的朋友建议了
  • 为什么 VB.NET 和 C# 中针对值检查 null 存在差异?

    In VB NET http en wikipedia org wiki Visual Basic NET有时候是这样的 Dim x As System Nullable Of Decimal Nothing Dim y As System
  • 使用API​​隐藏程序标题栏

    它可以使用 c 和 windows api 删除窗口控制台标题栏 如果是的话如何 请 这个简单的应用程序隐藏并显示其所在控制台的标题栏 它会立即将控制台标题更改为 guid 以查找窗口句柄 然后 它使用 ToggleTitleBar 使用找
  • C# 中四舍五入到偶数

    我没有看到 Math Round 的预期结果 return Math Round 99 96535789 2 MidpointRounding ToEven returning 99 97 据我了解 MidpointRounding ToE
  • 用户控件内所有控件均为空

    我有一个 UserControl 它使用 UserControl 以及其他控件 In the ascx文件我有以下代码
  • 从 future 中检索值时的 SIGABRT

    我在使用 C 11 future 时遇到问题 当我打电话时wait or get 关于返回的未来std async 程序接收从mutex标头 可能是什么问题呢 如何修复它 我在 Linux 上使用 g 4 6 将以下代码粘贴到 ideone
  • 如何在 Asp.net Gridview 列中添加复选框单击事件

    我在 asp 中有一个 gridview 其中我添加了第一列作为复选框列 现在我想选择此列并获取该行的 id 值 但我不知道该怎么做 这是我的 Aspx 代码
  • 存储过程上的 OdbcCommand - 输出参数上出现“未提供参数”错误

    我正在尝试执行存储过程 通过 ODBC 驱动程序针对 SQL Server 2005 但收到以下错误 过程或函数 GetNodeID 需要参数 ID 但未提供该参数 ID 是我的过程的 OUTPUT 参数 在存储过程中指定了一个输入 mac
  • C# datagridview 列转入数组

    我正在用 C 构建一个程序 并在其中包含一个 datagridview 组件 datagridview 有固定数量的列 2 我想将其保存到两个单独的数组中 但行数确实发生了变化 我怎么能这样做呢 假设一个名为 dataGridView1 的
  • 手动将 ClientBase 集合类型从 Array[] 更改为 List<>

    我将自己的 WCF 代理与 Client Base 一起使用 我想做一些类似于 svc util 中的 ct 属性的操作 并告诉代理返回 List 集合类型 我不能使用 List 因为实体由 nhibernate 管理 所以我必须使用 IL
  • 编译器错误“错误:在文件范围内可变地修改了‘字符串’”

    考虑 include
  • 无法加载文件或程序集“EntityFramework,版本=6.0.0.0”

    我究竟做错了什么 我该如何解决这个问题 我有一个包含多个项目的解决方案 它是一个 MVC NET 4 5 Web 应用程序 在调试模式下启动后调用其中一个项目时 出现此错误 导致此错误的项目具有以下参考 两个都是版本6 0 0 0 应用程序
  • 如何用 C 语言练习 Unix 编程?

    经过五年的专业 Java 以及较小程度上的 Python 编程并慢慢感觉到我的计算机科学教育逐渐消失 我决定要拓宽我的视野 对世界的一般用处 并做一些 对我来说 感觉更重要的事情就像我真的对机器有影响一样 我选择学习 C 和 Unix 编程
  • 设计 Javascript 前端 <-> C++ 后端通信

    在我最近的将来 我将不得不制作一个具有 C 后端和 Web 前端的系统 要求 目前 我对此了解不多 我认为前端将触发数据传输 而不是后端 所以不需要类似 Comet 的东西 由于在该领域的经验可能很少 我非常感谢您对我所做的设计决策的评论
  • 使用(linq to sql)更新错误

    我有两个表 通过外键 CarrierID 绑定 Carrier CarrierID CarrierName CarrierID 1 CarrierName DHL CarrierID 2 CarrierName Fedex Vendor V
  • 如何访问窗口?

    我正在尝试使用其句柄访问特定窗口 即System IntPtr value Getting the process of Visual Studio program var process Process GetProcessesByNam
  • TPL 数据流块下游如何获取源生成的数据?

    我正在使用 TPL Dataflow 处理图像 我收到处理请求 从流中读取图像 应用多次转换 然后将生成的图像写入另一个流 Request gt Stream gt Image gt Image gt Stream 为此 我使用块 Buff
  • 如何将对象转换为传递给函数的类型?

    这不会编译 但我想做的只是将对象转换为传递给函数的 t public void My Func Object input Type t t object ab TypeDescriptor GetConverter t ConvertFro
  • 如何获取 QIcon 的文件/资源​​路径

    假设我做了这样的事情 QIcon myIcon resources icon ico 我稍后如何确定该图标的路径 例如 QString path myIcon getPath 问题是 没有getPath 会员 我找不到类似的东西 但肯定有办
  • 新的 .NET 6 控制台模板中的 C# 函数重载不起作用

    我在尝试重载该函数时遇到错误Print object in the 新的 NET 6 C 控制台应用程序模板 https learn microsoft com en us dotnet core tutorials top level t

随机推荐

  • launchctl 无法运行二进制文件并以代码 78 退出

    我一直在构建一个 golangapp https gist github com krlc 8b9a79b33b857d1a66221ffc802d3c0d带有系统托盘 GUI 我想了launchctl每当我登录时运行我的程序 程序编译并运
  • 使用 Docker Compose 的交互式 shell

    有没有办法仅使用 Docker Compose 在容器中启动交互式 shell 我在 docker compose yml 中尝试过类似的操作 myapp image alpine latest entrypoint bin sh 当我使用
  • SublimeLinter:PHP linting 不起作用

    PHP linting 不适用于SublimeLinter https github com SublimeLinter SublimeLinter虽然它说PHP loaded在控制台中 我正在 Windows 上工作 此外 如果我打开命令
  • 哪里可以找到Hibernate的DTD?

    hibernate jar 中的 DTD 是了解可以包含哪些属性以及该标记的预期名称的好方法 打开 DTD 文件是获取所有元素和属性概览 查看默认值以及一些注释的最简单方法 这将帮助程序员从头开始编写 hibernate cfg xml 文
  • VS2022:如何使 ASP.NET Core 5 应用程序显示其控制台窗口

    在 VS2019 中 当我启动 ASP NET Core 5 应用程序时 它只公开一个 API 如果重要的话 会弹出该应用程序的控制台窗口 曾经有一些设置来决定是将其作为控制台 独立应用程序运行还是将其托管在 IIS Express 中 我
  • Glassfish 4不加载js文件

    我最近搬家了 从 glassfish 3 1 jsf 2 0 primefaces 3 5 java 6 到 glassfish 4 jsf 2 2 primefaces 5 java 8 Javascript 文件 通常是 Primefa
  • 是否可以在没有开发者 ID 的情况下测试推送通知?

    在 xcode 7 beta 版本之后 我可以在没有开发者 ID 的情况下在真实设备上安装应用程序 但是 我们可以做同样的事情吗 push notification 还是必须申请开发者ID 如果有方法请参考链接 为了使用 Apple 推送通
  • Sequelize 查找软删除的行

    我试图从数据库中获取一些已软删除的行和一些未软删除的行 但它对我不起作用 Model findAll where cond xxx include Model2 paranoid false then function rows do so
  • 使用 Apache tika 删除 PDFont 缓存

    我试图仅从许多不同的代码 rtf doc pdf 中提取文本 我很自然地转向 Apache Tika 因为它可以自动检测文档并相应地提取文本 我只对文本感兴趣 对格式等不感兴趣 我的应用程序最终出现了严重的内存泄漏 经过调查 这是来自 PD
  • Jquery 可拖放和可排序组合

    我被要求创建一个正方形网格 其中每个正方形可能包含也可能不包含链接 并且这些链接应该能够在网格上移动 我认为可拖动 可放置将是一种可行的方法 并且它工作得很好 但是 现在我们希望能够在一个可拖动对象放在另一个对象之上时能够交换可拖动对象 所
  • t-sql udf,获取参数的数据类型

    是否可以为我的 udf 获取数字参数 并根据其类型执行操作 例如 如果 p1的类型是decimal 10 3 否则如果 p1的类型是decimal 15 3 否则如果 p1 的类型是整数 尝试 sql variant property 函数
  • 字符串的最小字典值

    当使用运算符 smallest string 更具体地说 什么是比任何其他字符串更小的 使用 空字符串是所有字符串中 最小 的 也就是说 它比任何非空字符串都小 21 4 8 4 字符串 op template
  • 在用户定义类型和现有类型之间定义已存在(例如在 Prelude 中)运算符的正确方法是什么?

    假设我有一个包装现有类型的自定义类型 newtype T T Int deriving Show 假设我希望能够加起来Ts 并且将它们相加应该会导致将包装值相加 我会通过以下方式做到这一点 instance Num T where T t1
  • http 服务器可以检测到客户端已取消其请求吗?

    我的网络应用程序必须处理和提供大量数据才能显示某些页面 有时 用户关闭或刷新页面 而服务器仍在忙于处理该页面 这意味着服务器将继续处理数据几分钟 然后将其发送给不再侦听的客户端 是否可以检测到连接已断开并做出反应 在这个特定的项目中 我们使
  • Maven 多项目 Cobertura 在 mvn 站点构建期间报告问题

    我们有一个多项目 我们正在尝试运行 Cobertura 测试覆盖率报告 作为我们 mvn 站点构建的一部分 我可以让 Cobertura 在子项目上运行 但它错误地报告 0 覆盖率 即使报告仍然突出显示单元测试所命中的代码行 我们使用的是
  • CMD 全屏 Visual Studio

    我不小心将命令 shell 设为全屏 我设法将其恢复到原始状态 但现在当我运行 Visual Studio 时 屏幕闪烁黑色 我认为这是全屏命令 shell 启动 有人可以帮忙吗 如果再有一位同事问我是否感染了病毒 我就会去办公桌前 Tha
  • 像 Groupon 这样的网站如何根据其进行交易的城市来进行地理定位?

    假设您从加利福尼亚州阿古拉山 Agoura Hills 的入口点访问 Groupon Groupon 将如何将该城镇引用到最近有优惠的城市 例如洛杉矶 并选择该城市作为最近的城市 它是否从该位置获取纬度 经度并计算与所有可用城市的距离 选择
  • iOS 5 上的 jQuery 事件

    我在 jQuery 1 6 4 iOS 5 和 touchstart touchend 事件的注册方面遇到问题 显然 如标题中所述 采取以下代码
  • 如何判断拼图是否完成?

    我正在准备一款像拼图这样的小游戏 为此我在布局中使用了 9 个图像视图和 9 个不同的图像 在启动时将图像设置为 imageview 这些是实际图像 随机播放后用户将滑动图像以完成拼图 我想检查修改后的图像与实际图像的 天气是否相等 如果它
  • 在 WinForms 中更新 BindingSource 不会更新数据源集合

    我想在中显示自定义集合DataGridView在 Windows 窗体应用程序中 这个自定义集合实现了ICollection and IEnumerable 我已经设置了一个BindingSource 使用集合作为 DataSource 属