c# - DataGridView - 添加到 DataSource 不反射(reflect)控件中的更改

标签 c# datagridview datasource

我有一个 DataGridView,其数据源设置为一个列表。当我添加到该列表时,DataGridView 未拾取更改。初始化的确切代码是:

dataGridView1.DataSource = document.m_statement.BANKMSGSRSV1.STMTTRNRS.STMTRS.BANKTRANLIST.STMTTRN;
dataGridView1.AllowUserToAddRows = true;
dataGridView1.AllowUserToDeleteRows = true;
dataGridView1.AllowUserToOrderColumns = true;
dataGridView1.AllowUserToResizeColumns = true;
dataGridView1.AllowUserToResizeRows = false;

更新数据源的具体代码是:

SimpleOfx.OFXBANKMSGSRSV1STMTTRNRSSTMTRSBANKTRANLISTSTMTTRN transaction = new SimpleOfx.OFXBANKMSGSRSV1STMTTRNRSSTMTRSBANKTRANLISTSTMTTRN();
document.m_statement.BANKMSGSRSV1.STMTTRNRS.STMTRS.BANKTRANLIST.STMTTRN.Add(transaction);

正如您可能知道的那样,类名是使用 xsd.exe 生成的,SimpleOfx 是生成类的命名空间,STMTTRN 是一个列表,document 是包含反序列化 XML 文件的类的实例,m_statement是那个文件。

知道我必须做什么才能让控件反射(reflect)设置后对 DataSource 所做的更改吗?我试过再次设置它,但那不起作用。我试过“刷新”和其他各种听起来很有希望但都没有用的方法。提前致谢:)

编辑:更多信息;我可以进入代码并查看我的“文档”成员和 dataGridView1 的“数据源”属性;它们都有正确数量的元素,包括最后一些默认构造的元素,但控件仍然没有绘制这些额外的行。 DataGridView 的数据源似乎知道列表的新内容,但没有绘制它们。

最佳答案

我通过将 STMTTRN 从 List 更改为 BindingList 来解决这个问题 - 当用作 DataSource 时,List 似乎有一些非常奇怪的行为(请参阅我最近的另一个问题,它以相同的方式解决)。

它在生成的代码中,但我已经将它从数组更改为列表,因此 BindingList 几乎没有任何额外的麻烦:)

关于c# - DataGridView - 添加到 DataSource 不反射(reflect)控件中的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1422052/

相关文章:

c# - 在 C# 中将时间跨度转换为日期时间

c# - Identity Server 3 作为 SharePoint 2013/2016 的 Ws-Fed 身份提供者

c# - 如何让一个物体精确定位并减速到指定位置停止?

c# - ADO.NET 从 datagrid1 中选择一行以显示 datagrid2 中的行

c# - 随机词生成器 #2

c# - 无法对数据 GridView 进行排序

c# Datagridview (Winform) 基于相邻单元格值的单元格着色

java - 没有事务的 JTA 数据源

java - 使用钱包实例化 Oracle 数据源,无需指定用户名和密码

postgresql - setSslMode() 不适用于 PGConnectionPoolDataSource