DataGridViewの列を2つのコントロールの種類(チェックボックス& TextBox)と混在させようとしていますが、そのデータは、私は少し柔軟性があります。DataGridView、型指定された列のセルを別の型に変更する
ストアドプロシージャでGridViewで「選択」列として機能する空の列を返しますが、条件に基づいて他の種類にセルを変換しようとすると問題が発生しています......
私は問題を保つにはコントロールタイプ間の変換、私は最初の値を変換するdiferent方法のalsortを試してみました際のデータ型であり、最初の制御、などなど何も.....
を100%に作業していません現在のところ、私はSPの列に 'False'の文字列を返すし、チェックボックスを作成するための条件でこれを使用して.....それは正常に動作しますが、値はブール値に変換した後でもsstringのままです。また、ブールチェックボックスではなく、値が「文字列」である.....これが今の私の頭の上に行っていると私は途方に暮れてよ......
NewCntrl2 = New DataGridViewCheckBoxCell
NewCntrl2.Value = Convert.ToBoolean(DGV.Cells(0).Value)
NewCntrl2.ValueType = GetType(System.Boolean)
DGV.Cells(0) = NewCntrl2
これは変換するコードです...チェックボックスセル
チェックボックスの値がまだ(「偽」)文字列である理由の任意のアイデアに
その私はcellclickイベントを処理するとき、私は確認することはできませんされて、今やって何に問題があることをtextboxcolumncell '値ではない'手法を使用してチェックボックスをオフにする
---- EDIT ----
これは私が使用しているサブで、いくつかの異なるタイプのコントロールを作成します。
Public Sub posted_CreateControls()
Dim Cell_0 As String
Dim Cell_1 As String
Dim Cell_2 As String
Dim NewCntrl As DataGridViewButtonCell
Dim NewCntrl2 As DataGridViewCheckBoxCell
For Each Rw As DataGridViewRow In dgvPosted.Rows
With Rw
Cell_0 = .Cells(1).Value.ToString
Cell_1 = .Cells(2).Value.ToString
Cell_2 = .Cells(3).Value.ToString
'this column starts with a value 'False' returned by the SP,
'we dont want checkboxes on all rows and using false string was the only method
'i could find to easily do this
'if both assign and unassign id are present then we need a checkbox
Select Case Cell_0
Case String.Empty
.Cells(0).Value = String.Empty
Case Else
If Not Cell_1 = String.Empty Then
NewCntrl2 = New DataGridViewCheckBoxCell
NewCntrl2.Value = Convert.ToBoolean(.Cells(0).Value)
NewCntrl2.ValueType = GetType(System.Boolean)
.Cells(0) = NewCntrl2
Else
.Cells(0).Value = String.Empty
End If
End Select
'Create an Assign button for each row in columnindex 0(Assign) if ColumnIndex(2)(Edit) contains M, L or I
Select Case Cell_2
Case "M", "L", "I", "P"
NewCntrl = New DataGridViewButtonCell
.Cells(1) = NewCntrl
NewCntrl.Tag = Cell_0
NewCntrl.Value = "Assign"
End Select
'Create an UnAssign button in columnindex 1(UnAssign) if the value of columnindex 1(Unassign) is not empty
If Not Cell_1 = vbNullString Then
NewCntrl = New DataGridViewButtonCell
.Cells(2) = NewCntrl
NewCntrl.Tag = Cell_1
NewCntrl.Value = "UnAssign"
End If
'Create an Edit button on columnindex 2(Edit) if ColumnIndex 2(Edit) is not M, L or empty string
Select Case Cell_2
Case "M", "L", "P", vbNullString
'Do Nothing
Case Else
NewCntrl = New DataGridViewButtonCell
.Cells(3) = NewCntrl
NewCntrl.Tag = Cell_2
NewCntrl.Value = "Edit"
End Select
End With
Next
NewCntrl = Nothing
End Sub
これは私がそれらをしたいどのようにチェックボックスを作成しますが、値は私がtrueにチェックボックスの値と.VALUE =いないを設定しようとしているので、失敗するcell.clickイベントを引き起こしている文字列として残ります。何らかの理由で値が文字列のままであるが、チェックボックスの値の型が実際ブールであるため、値の一部は、代わりに戻って偽の試みを返すので.....
また、私は特定の行からチェックボックスを削除する必要があるときに問題を見つけました......すべての行がそれらを持っているはずではなく、反転を試みました..チェックボックスのセルをテキストボックスのセルに変更しましたが、その原因となるFormatValueエラーを防止する方法を見つけます。しかし、私は上で与えたコードでこれを試していませんでした...私はそれを試して、それが動作するかどうかを確認します –
私はまだ列のアプローチに行くチェックボックスのいずれかを有効/無効にするcellformattingイベントを処理する/通常のテキストボックスセルに移動します。 – FloatingKiwi
私はセルが完全に空白である必要があります。標準のテーブルではなく、親の行を分離するために空の行があり、各親の行に複数の子行があり、子の行もあります。ただし、テーブルの複雑な性質を気にすることはありません。私の唯一の問題は、セルのコントロールを別の型に変更すると、値の型は変更されますが、古い値が保持されます。文字列の... .......エラーが全くない、私はちょうど何かを逃したと思う。 –