.Net Box

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
How do I prevent the datagrid from displaying its append row (the row at the end with an asterisk)?
原文:http://www.syncfusion.com/FAQ/WindowsForms/FAQ_c44c.aspx#q653q

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
     }
 
}
posted on 2006-12-08 10:22  Box  阅读(496)  评论(0编辑  收藏  举报