Aur*_*nto 17 c# datagridview winforms
首先,我在这里查找了这个相关的问题, 但解决方案dataGridView1.Rows.Add()在我的情况下不起作用.
在我的Datagridview中,我有3个TextBox用于数据输入,2个ComboBox用于用户选择值(绑定到数据库中).我的一个TextBox被设置为只读,以便用户只能在数据网格外部填充它(使用普通的TexBox和一个Button).
当用户用数据填充DataGridView时,底部总是有一个空行; 所以我禁用了这个,我使用此代码来防止用户在datagrid中添加新行...
dataGridView1.AllowUserToAddRows = false
Run Code Online (Sandbox Code Playgroud)
我只想在用户单击上面提到的按钮时添加一个新行(这会引发错误).
我得到的错误信息是:
"当控件是数据绑定时,无法以编程方式将行添加到datagridview的行集合中"
带有红色箭头的那个是ComboBox,带有绿色箭头的那个是只读的TextBox
Ker*_*y H 24
看起来好像您正在使用DataGridView的DataSource属性.当此属性用于绑定到数据时,您无法直接向DataGridView显式添加行.您必须直接向数据源添加行.
例如,如果您的数据源是DataTable,则使用分配给DataSource属性的DataTable(未测试):
private void AddARow(DataTable table)
{
// Use the NewRow method to create a DataRow with
// the table's schema.
DataRow newRow = table.NewRow();
// Add the row to the rows collection.
table.Rows.Add(newRow);
}
Run Code Online (Sandbox Code Playgroud)
小智 13
你可以得到DataGridView的DataSource,并投它作为一个DataTable.
然后添加一个新的DataRow并设置字段的值.
将新行添加到DataTable和接受更改.
在C#中它会是这样的:
DataTable dataTable = (DataTable)dataGridView.DataSource;
DataRow drToAdd = dataTable.NewRow();
drToAdd["Field1"] = "Value1";
drToAdd["Field2"] = "Value2";
dataTable.Rows.Add(drToAdd);
dataTable.AcceptChanges();
Run Code Online (Sandbox Code Playgroud)