|
5.8 How do I prevent the datagrid from displaying its append row (the row at the end with an asterisk)?
|
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";
|
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)
|
CurrencyManager cm = (CurrencyManager)BindingContext[DataGrid1.DataSource,DataGrid1.DataMember];
|
DataView dv = (DataView) cm.List;
|
|
|
|