注意:ここで紹介しているDataGridは、System.Windows.Forms名前空間のDataGrid(Windowsフォーム)です。System.Web.UI.WebControls名前空間のDataGrid(Webフォーム)ではありません。
DataGridにおいて新しい行の追加、編集、削除をすべて禁止するには、DataGrid.ReadOnlyプロパティをTrueにします。新しい行の追加を禁止すると、DataGridの一番下に表示される新しい行(*行)が表示されなくなります。つまり、DataGrid.ReadOnlyプロパティをTrueにすることで、*行を表示しないように出来ます。
DataGrid1.ReadOnly = True
DataGrid1.ReadOnly = true;
DataGrid.ReadOnlyプロパティをTrueにすると、追加、編集、削除のすべてが禁止されてしまいます。例えば追加のみを禁止にしたいときには、DataViewクラスのAllowNewプロパティをFalseにします。同様に編集、削除を個別に禁止するには、DataViewクラスのAllowEditプロパティ、及びDataViewクラスのAllowDeleteプロパティをFalseにします。
次に新しい行の追加のみを禁止する例を示します。
'CurrencyManagerを取得する 'ここではDataGrid1.DataSourceに 'DataTableオブジェクトが設定されているものとする Dim cm As CurrencyManager cm = CType( _ DataGrid1.BindingContext( _ DataGrid1.DataSource, DataGrid1.DataMember), _ CurrencyManager) 'DataViewを取得する Dim dv As DataView = CType(cm.List, DataView) '新しい行の追加を禁止する dv.AllowNew = False
//CurrencyManagerを取得する //ここではDataGrid1.DataSourceに //DataTableオブジェクトが設定されているものとする CurrencyManager cm = (CurrencyManager) DataGrid1.BindingContext[ DataGrid1.DataSource, DataGrid1.DataMember]; //DataViewを取得する DataView dv = (DataView) cm.List; //新しい行の追加を禁止する dv.AllowNew = false;
補足:CurrencyManager クラスには次のようにDataGridコントロールのNavigateイベントでAllowNewプロパティをFalseにする例が載っています。DataGrid.DataSourceにDataSetが設定されている場合に参考になります。
Private Sub Grid_Navigate(sender As Object, e As NavigateEventArgs) If e.Forward Then Dim ds As DataSet = CType(grid.DataSource, DataSet) Dim cm As CurrencyManager = _ CType(BindingContext(ds,"Customers.CustOrders"), CurrencyManager) 'AllowNewプロパティを設定するため、IListをDataViewにキャストする Dim dv As DataView = CType(cm.List, DataView) dv.AllowNew = false End If End Sub
private void Grid_Navigate(object sender, NavigateEventArgs e) { if (e.Forward ) { DataSet ds = (DataSet) grid.DataSource; CurrencyManager cm = (CurrencyManager)BindingContext[ds,"Customers.CustOrders"]; //AllowNewプロパティを設定するため、IListをDataViewにキャストする DataView dv = (DataView) cm.List; dv.AllowNew = false; } }
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。