金曜日, 9月 12, 2008
[VB2005]DataGridを編集可能で新規追加行(*行)を非表示にする
▼質問
DataGridを編集可能にすると新規追加行(*行)が表示されるんだ。
これを表示しないようにする方法はないのか教えてくれ!
▼回答
あるよ!下記のサイトを参考にしてくれ!
■参考サイト
DataGridの一番下の新しい行(*行)が表示されないようにする: .NET Tips: C#, VB.NET, Visual Studio
http://dobon.net/vb/dotnet/datagrid/allownew.html
おーすばらしい!!できた。
関数にしてみた。
Public Sub SetAllowNew(ByVal b As Boolean, ByVal oDG As DataGrid)
Dim objCurrencyManager As CurrencyManager = _
CType(oDG.BindingContext(oDG.DataSource, oDG.DataMember), CurrencyManager)
'DataViewを取得する
Dim objDataView As DataView = CType(objCurrencyManager.List, DataView)
'新しい行の追加を設定する
objDataView.AllowNew = b
End Sub▼質問
「CurrencyManager」って何?▼回答オブジェクトのプロパティ値とコントロールのプロパティ値との間の単純バインディングの
リストを管理するオブジェクトらしい。
▼質問
新規追加行は表示されずに編集は可能になったんだけど・・・。
これだと、全てのセルが編集可能になってしまって困るんだ。
特定のセルだけを編集可能にするにはどうしたらいいの?
▼回答
DataGridのCurrentCellChangedイベント、MouseClickイベント、MouseDownイベント、
MouseUpイベントでカレントセルをチェックするればできるよ。
こんな関数を作成してみたから、参考にしてくれ!
各イベントで呼ぶだけでOKだ!!
Private Sub CheckCurrentCell(ByVal sender As Object, _
ByVal e As System.Windows.Forms.MouseEventArgs)
Dim dg As DataGrid = CType(sender, DataGrid)
Dim row As Integer = dg.CurrentCell.RowNumber
Dim col As Integer = dg.CurrentCell.ColumnNumber
Select Case dg.CurrentCell.ColumnNumber
Case 対象列番号
Case Else
End Select
End Sub