- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想在 DataGridView
中显示自定义集合在 Windows 窗体应用程序中。此自定义集合实现了 ICollection
, 和 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 的内部列表包含正确数量的记录 (3),并且 DataGridView
也包含三个记录,但 myCollection 只包含两个记录。我知道更改基础 myCollection 不会更新 BindingSource
或 DataGridView
, 因为它不是 BindingList<T>
, 但我的印象是更新 BindingSource
直接将确保 myCollection 同时更新。
有没有办法使用不是 BindingList<T>
的集合?并在与 BindingSource
交互时更新它直接?
更新:我在所有部分(Collection、BindingSource、DataGridView)中更新数据的一种方法如下:
myCollection.Add(myCustomObject3);
myBindingSource.DataSource = null;
myBindingSource.DataSource = myCollection;
我很确定有更好的方法来解决这个问题,但这是产生我预期结果的唯一方法。
最佳答案
问题是 Fill Adaptor。当您加载表单时,Fill 已为您完成。只需确保执行重新填充,然后在任何数据更改后使用重置绑定(bind)跟进,网格将得到刷新。
示例:
WorkTableAdapter.Insert(objData.XAttribute, "",
objData.YAttribute,objLoanData.Amount_IsValid, DateTime.Now, DateTime.Now);
this.WorkTableAdapter.Fill(this.POCDataSet.Work);
this.WorkBindingSource.ResetBindings(false);
关于c# - 在 WinForms 中更新 BindingSource 不会更新数据源集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14571451/
我注意到这两种在 winforms 中实现数据绑定(bind)的方法。但是,我想知道其中哪一种更受欢迎(在整体性能方面,例如设计时间,效率?据我所知,这两种是: BindingSource 作为 Bi
是什么让我使用这样的东西: DataGridView dgvDocuments = new DataGridView(); BindingSource bindingSource = new Bind
我有一个带有数据 GridView 和一些绑定(bind)到绑定(bind)源的文本框的表单。表单上有一个新建按钮和保存按钮。我希望用户 单击“新建”按钮,这将导致网格转到新行并且文本框变为空白(因为
我想我很了解 BindingSource 类的作用——即在数据源和 UI 控件之间提供一层间接。它实现了 IBindingList 接口(interface),因此还提供了对排序的支持。而且我已经使用
我无法获取当前行值。我该怎么办? bindingSource1.DataSource = LData; (LData is Generic List) public DataRow currentRo
绑定(bind)源代码: Component.DataSource = new BindingSource(yourSource, ????); 我看到的所有示例都遵循这种模式,而不是 ????,我总
是否可以在多个列上使用 BindingSource 的 Find 方法? 例如,假设我有一个显示当前宠物的 GridView ;两个组合框,cboPetType 和 cboGender;以及一个用于根
我正在尝试绑定(bind)到 Linq-To-SQL 查询的结果,我已将其设置为填充图形。 该图沿着 X 轴的日期线和 Y 轴的货币线。有两个系列,一个是进钱的,一个是出钱的。 到目前为止还很简单。
我遇到的问题是过滤器不接受日期时间的时间部分。 为了清楚起见, 这有效。 " AND NextWorkDate <= #" + DateTime.Now.AddDays(1).ToString("dd
我的winform中有很多bindingsource,我想动态改变我的gridview的dataSource,所以我想通过名称获取bindingSource。我找到了以下代码来从我的 winform
我想根据日期从数据库中过滤值。 数据库中的日期包含如下值:2008-12-28 18:00:00。我的类(class)有一个 DateTime 变量,具体取决于我要过滤的内容。理想情况下它会像这样工作
为了解释这个问题,我把所有需要的东西都放到了一个小的示例应用程序中,希望能解释这个问题。我真的试图尽可能减少所有内容,但在我的实际应用程序中,这些不同的 Actor 彼此不认识,也不应该。因此,像“在
我有一个 C# Windows 窗体项目,其中包含一个包含 2 个列表框和一个按钮的窗体。 在 FormLoad 上,左侧 ListBox 填充了一个列表(大约 1800 项),其中包含有关证券(ID
使用绑定(bind)到绑定(bind)源控件的 datagridview 绑定(bind)到 LINQ to SQL类,我想知道如何将 bindingSource 定位到特定记录,也就是说,当我在文本
我有一个绑定(bind)到 DataTable 的 BindingSource。 我使用 BS 过滤器并希望使用 Bindingsource 迭代数据表的过滤数据集。 我知道我可以执行 MoveFir
这是我正在处理的表单部分: 以下代码使用 bindingSource 将 BindingNavigator 链接到数据集。我可以使用此绑定(bind)源将两个文本框连接到数据吗? 我是否只需要使用文本
我正在考虑使用数据绑定(bind) - 最简单的事情似乎是使用 BindingSource 来包装我的数据对象。 但是,虽然 CurrentItemChanged 事件会告诉我属性何时发生更改,但它不
这是我正在处理的表单部分: 以下代码使用 bindingSource 将 BindingNavigator 链接到数据集。我可以使用此绑定(bind)源将两个文本框连接到数据吗? 我是否只需要使用文本
来自微软:“BindingSource.ListChanged 事件在基础列表更改或列表中的项目更改时发生”。 但在我的示例中,事件会在每次位置更改时触发。表单有一个 UserControl、一个 B
我有一个只有 1 个对象作为数据源的 BindingSource。 我绑定(bind)了数据源上的一些值。这非常有效。 但是。 当我这样做时: bindingSource.DataSource = n
我是一名优秀的程序员,十分优秀!