2017-02-20 17 views
0

Devexpressグリッドビューリポジトリcheckedit次のセルのcheckeditを選択した直後に自動的に選択を解除します。Devexpress XtraGridでRepositoryItemCheckEditを使用して複数のセルを選択する方法を教えてください。

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    ConnectDatabase() 
    loadv() 
End Sub 

Private Overloads Sub loadv() 
    Dim DataAdapter5 As New MySqlDataAdapter 
    Dim DataSet1 As New DataSet 
    DataSet1.Clear() 

    Dim str1 As String = String.Format("SELECT `id`, `Name` FROM `mydb`.`mytable` ORDER BY Name ") 
    DataAdapter5 = New MySqlDataAdapter(str1, conn) 
    DataAdapter5.Fill(DataSet1) 

    ' GridControl1.RefreshDataSource() 

' GridControl1.Refresh() 

    GridControl1.DataSource = DataSet1 
    With GridControl1 
     .DataSource = DataSet1.Tables(0) 
    End With 
    GridView1.BestFitColumns() 
End Sub 

これは私のグリッドビューである:ここで

Form1 load view

は、基礎となるDBのテーブルです:

は、テーブルに警告し、実装する方法 MyDatabase

新しいスクリーンショットをアップロードの複数セル選択とResultsPendingの列?

+0

はあなたが編集確認のマークと未チェックのチェックボックスでスクリーンショットを追加することができます。 ここに私のコードですか? – andrews

+0

私はVBでサンプルを作成しました。netとgoogle drive.https://drive.google.com/file/d/0B_JyyZZteh3eNnNRVUJ1TmRoSWs/view?usp = sharing – newcommer

+0

に上記の共有.zipファイルのcapture1とcapture2という2つのスクリーンショットが追加されました – newcommer

答えて

0

PassedResultPendingという2つの列がありますが、IDNameのみをデータベースからロードします。したがって、2つのチェックボックス列はデータにバインドされません。これらは、バインドされていない列と呼ばれます。

自分でバインドされていない列の状態を維持する必要があります。

チェックボックスをオンにすると、コードビハインド(ある種類のList)のどこかに状態を記録する必要があります。フォームが再描画されると、チェック状態データをグリッドに戻す必要があります。 - それは読み取りと書き込みの両方のケースをサポートしています

  1. GridControl.CustomUnboundColumnData Eventを:これは探検達成するために

  2. Unbound Boolean column with the CheckEdit
  3. Behavour of CheckEdit with MultiSelect mode turned on
  4. 検索DXキーワードを使用して、より結果を得るためにsupport forum: 'checkeditが結合していない'

・ホープ、このことができます。

+0

このクエリを追加してもまだ運がない。 Dim str1 As String = String.Format( "SELECT、\t、"名前 "、"合格 "、"結果保留 "、" mydb'.mytable'、ORDER BYの名前) – newcommer

+0

@newcommer、あなたはこれらの列を持っていますか? DB?もともと、DBスクリーンショットには存在しません。したがって、バインドされていない列の概念を使用する必要がありました。さて、これらの列をDBに追加する場合は、グリッドHTMLマークアップにDBフィールド名を適切に指定して、DBバインドされた通常の列と同様に処理する必要があります。 – andrews

+0

あなたは今確認していただけますか? – newcommer

0
  1. ツールボックスから作成されたバインディングソース。
  2. 作成された新しいタイプのないデータセット(ツールボックスを使用してdsOnDesignという名前)とデータセットにテーブルが作成されました。次に、表に列を作成しました。
  3. バインド元にデータメンバーとしてデータソースとテーブルとして割り当てられたデータセット。
  4. 次に、プロパティを使用してバインディングソースをグリッドコントロールに割り当てました。 これで、データセットテーブルの列をグリッドビューの列にバインドする必要がありました。 「グリッドデザイナー」を開いても構いません。 カラム(メインビュー) - >カラムを選択し、それぞれにフィールド名を割り当てます。 "Filed List"の表の列と "Columns"のグループのGirdの列を見ることができます。

    Public Class Form1 
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles  MyBase.Load 
        ConnectDatabase() 
        loadView() 
        End Sub 
        Private Sub loadView() 
    Dim enumerator As IEnumerator = Nothing 
    dsOnDesign.Tables(0).Clear() 
    Dim dataSetTemp As System.Data.DataSet 
    dataSetTemp = New DataSet 
    Dim da As New MySqlDataAdapter 
    Dim str As String = "SELECT id, name, passed, resultPending FROM mydb.mytable" 
    da = New MySqlDataAdapter(str, conn) 
    da.Fill(dataSetTemp) 
    Try 
        enumerator = dataSetTemp.Tables(0).Rows.GetEnumerator() 
        While enumerator.MoveNext() 
         Dim current As DataRow = DirectCast(enumerator.Current, DataRow) 
         Dim i As DataRow = Me.dsOnDesign.Tables(0).NewRow() 
         i("ID") = Conversions.ToInteger(current(0)) 
         i("Name") = current(1).ToString() 
         i("Passed") = If(current(2) Is DBNull.Value, False, fbool(CBool(current(2)))) 
         i("ResultPending") = If(current(3) Is DBNull.Value, False, fbool(CBool(current(3)))) 
         dsOnDesign.Tables(0).Rows.Add(i) 
        End While 
    Finally 
        If (TypeOf enumerator Is IDisposable) Then 
         TryCast(enumerator, IDisposable).Dispose() 
        End If 
    End Try 
    GridControl2.DataSource = dsOnDesign.Tables(0) 
    End Sub 
    
        Private Function fbool(ByVal bool As Boolean) As Boolean 
        If bool = True Then 
         Return True 
        Else 
         Return False 
        End If 
    End Function 
    End Class 
    
関連する問題