代码之家  ›  专栏  ›  技术社区  ›  Ben Hymers

DataGridView-添加到数据源不反映控件中的更改

  •  1
  • Ben Hymers  · 技术社区  · 15 年前

    我有一个将数据源设置为列表的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是生成类的命名空间,stmtrn是列表,document是包含反序列化XML文件的类的实例,m_语句是该文件。

    知道我要做什么才能让控件反映在设置数据源之后对其所做的更改吗?我试过重新设置,但不起作用。我试过“刷新”和其他各种听起来有希望的方法,但它们也没有起作用。事先谢谢:)

    编辑:更多一些信息;我可以分解代码并查看我的“document”成员和DataGridView1的“datasource”属性;这两个元素的数量都正确,包括结尾处的一些默认构造元素,但控件仍然不绘制这些额外的行。 DataGridView的数据源似乎知道列表的新内容,但没有绘制它们。

    2 回复  |  直到 15 年前
        1
  •  4
  •   Ben Hymers    15 年前

    我通过将stmtrn从一个列表更改为一个bindingList来解决这个问题-当用作数据源时,列表似乎有一些非常奇怪的行为(请参阅我最近的另一个问题,它也是以同样的方式解决的)。

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

        2
  •  1
  •   Jan Jongboom    15 年前

    在添加到数据源列表后,您必须重新绑定,因此重做:

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