DataGridの一番下の新しい行(*行)が表示されないようにする
新しい行の追加、編集、削除を禁止する
注意:ここで紹介している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にします。
次に新しい行の追加のみを禁止する例を示します。
Dim cm As CurrencyManager
cm = CType ( _
DataGrid1.BindingContext( _
DataGrid1.DataSource, DataGrid1.DataMember), _
CurrencyManager)
Dim dv As DataView = CType (cm.List, DataView)
dv.AllowNew = False
CurrencyManager cm =
(CurrencyManager) DataGrid1.BindingContext[
DataGrid1.DataSource, DataGrid1.DataMember];
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)
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"];
DataView dv = (DataView) cm.List;
dv.AllowNew = false ;
}
}