簡體   English   中英

DataGridView-添加到DataSource不會反映控件中的更改

[英]DataGridView - adding to DataSource doesn't reflect changes in the control

我有一個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是該文件。

知道要設置該控件以反映對DataSource所做的更改后,我需要做什么嗎? 我嘗試再次設置它,但這不起作用。 我已經嘗試過“刷新”和其他聽起來很有希望的其他方法,但它們也都沒有用。 提前致謝 :)

編輯:更多信息; 我可以深入研究代碼,看看我的'document'成員和dataGridView1的'DataSource'屬性; 它們都具有正確數量的元素,包括結尾處的一些默認構造的元素,但控件仍未繪制這些多余的行。 DataGridView的DataSource似乎確實知道列表的新內容,但並未繪制它們。

我通過將STMTTRN從List更改為BindingList來解決此問題-List用作DataSource時似乎有一些非常奇怪的行為(請參閱我的其他近期問題,該問題也以相同的方式解決)。

它在生成的代碼中,但是我已經將其從數組更改為列表,因此BindingList幾乎沒有任何額外的麻煩:)

添加到數據源列表后,您必須重新綁定,因此請重做:

dataGridView1.DataSource = document.m_statement.BANKMSGSRSV1.STMTTRNRS.STMTRS.BANKTRANLIST.STMTTRN;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM