Google
 
Web itpro-blogger.blogspot.com
金曜日, 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







Comments: コメントを投稿

<< Home

This page is powered by Blogger. Isn't yours?