How do I prevent the datagrid from displaying its append row (the row at the end with an asterisk)

Platform: WinForms| Category: Datagrid

The DataGrid class does not have a property that controls whether a new row can be added. But the DataView class does have such a property (along with some others such as AllowEdit and AllowDelete). Here is code that will turn off the append row by getting at the dataview associated with the datagrid.

	string connString = @'Provider=Microsoft.JET.OLEDB.4.0;data source=C:\northwind.mdb';
	string sqlString = 'SELECT * FROM customers';

	// Connection object
	OleDbConnection connection = new OleDbConnection(connString);

	// Create data adapter object
	OleDbDataAdapter dataAdapter = new OleDbDataAdapter(sqlString, connection);

	// Create a dataset object and fill with data using data adapter’s Fill method
	DataSet dataSet = new DataSet();
	dataAdapter.Fill(dataSet, 'customers');
			
	// Attach dataset’s DefaultView to the datagrid control
	dataGrid1.DataSource = dataSet.Tables['customers'];

	//no adding of new rows thru dataview...
	CurrencyManager cm = (CurrencyManager)this.BindingContext[dataGrid1.DataSource, dataGrid1.DataMember];	
	((DataView)cm.List).AllowNew = false;

If your datagrid contains links, then Matthew Miller suggest adding Navigate handler such as the one below to disallow the AddNew.

private void DataGrid1_Navigate(object sender, System.Windows.Forms.NavigateEventArgs ne)
{
	if(ne.Forward)
	{
		CurrencyManager cm  = (CurrencyManager)BindingContext[DataGrid1.DataSource,DataGrid1.DataMember];
		DataView dv  = (DataView) cm.List;
		dv.AllowNew = false;
	}
}

Share with

Related FAQs

Couldn't find the FAQs you're looking for?

Please submit your question and answer.