【问题标题】:C# WinForms: Adding row to a DataGridView which is Data boundC# WinForms:将行添加到数据绑定的 DataGridView
【发布时间】:2015-04-17 13:15:51
【问题描述】:

我有一个包含两个按钮的 Datagridview,一个 AddEntry 按钮和一个 EditEntry 按钮。每当加载表单时,都会将 Excel 工作表中的数据加载到 gridview。

将数据从 excel 工作表加载到 gridview 没有任何问题。 AddEntry 按钮会将我重定向到另一个表单,该表单有一些文本框可以添加条目。

但是,当我尝试通过单击 AddEntry 按钮将新条目添加到 gridview 时,我收到此错误:“ROWS CANNOT BE PROGRAMMATICALLY ADDED TO THE ROW COLLECTION WHICH IS CONTROL BOUND/DATA BOUND”。

这是我的代码隐藏 AddEntry 按钮:

 private void AddEntry_Click(object sender,eventargs e)
 {
     gridview.Rows.Add(_sno.Text,_date.Text,_category.Text);
 }

具有用于添加数据的文本框的表单中的构造函数:

DataGridView gridview;
public FinanceEntries_Open(DataGridView _grid,string filename)
{
    InitializeComponent();
    label2.Text = filename;
    gridview = _grid;
}

【问题讨论】:

  • 请同时显示绑定

标签: c# winforms datagridview


【解决方案1】:

由于您使用的是绑定,因此您需要将对象添加到基础集合中,而不是直接添加到数据网格视图中。如果您使用的是列表或数据表,请将新对象添加到此集合中。通过绑定,它将显示在您的数据网格视图中。

【讨论】:

    【解决方案2】:

    如果您使用DataGridViewDataSource 属性绑定到数据,则无法直接将行显式添加到DataGridView。您必须改为将行直接添加到您的数据源。

    相反,您可以将此新行添加到绑定到 DataGridView 的 DataSet 或 DataTable。

    您可以使用DataTable.NewRow 方法向绑定的数据添加新行并刷新GridView。

    如果你绑定的是DataTable

    DataTable dataTable = new DataTable();
    DataRow newRow = dataTable.NewRow();
    
    // add new data to this newRow
    
    dataTable.Rows.Add(newRow);
    

    如果您使用的是List

    List<YOUR_DATA_LIST> myData = new List<YOUR_DATA_LIST>();
    
    //Add new YOUR_DATA_LIST object to the list
    myData.Add(new YOUR_DATA_LIST());
    
    //Now Refresh / Reset the Datasource
    gridView.DataSource = null;
    gridView.DataSource = myData;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-10
      • 1970-01-01
      • 2017-05-01
      • 2011-09-15
      • 1970-01-01
      • 2019-07-21
      相关资源
      最近更新 更多