DOBON.NETプログラミング道掲示板

No35075 の記事


■35075 / )  DataViewのFindRowsde
□投稿者/ Wan 付き人(62回)-(2022/06/15(Wed) 17:49:25)
  • アイコン環境/言語:[VisualBasic2019 Windows10 Basic Framework4.7.2] 
    分類:[.NET] 

    DataViewについて勉強しています。
    https://docs.microsoft.com/ja-jp/dotnet/api/system.data.dataview.find?view=net-6.0#system-data-dataview-find(system-object())
    のページに次のコードがかかれています。
    Private Sub FindValueInDataView(table As DataTable)
        Dim view As New DataView(table)
        view.Sort = "Customers"
        Dim vals(1) As Object
        vals(0)= "John"
        vals(1) = "Smith"
        Dim i As Integer = view.Find(vals)
        Console.WriteLine(view(i))
    End Sub
    これを参考に次のコードを作成しました。
    Dim myTable As New DataTable
    Dim myColumn As DataColumn
    myColumn = New DataColumn("FirstName")
    myTable.Columns.Add(myColumn)
    myColumn = New DataColumn("LastName")
    myTable.Columns.Add(myColumn)
    Dim myRow As DataRow
    myRow = myTable.NewRow
    myRow.ItemArray = New Object() {"佐々木", "渉"}
    myTable.Rows.Add(myRow)
    myRow = myTable.NewRow
    myRow.ItemArray = New Object() {"山本", "健司"}
    myTable.Rows.Add(myRow)
    myRow = myTable.NewRow
    myRow.ItemArray = New Object() {"山本", "弘子"}
    myTable.Rows.Add(myRow)
    myRow = myTable.NewRow
    myRow.ItemArray = New Object() {"森本", "武"}
    myTable.Rows.Add(myRow)
    Dim myDataView As New DataView(myTable)
    myDataView.Sort = "FirstName"
    Dim test = myDataView.FindRows(New Object() {"山本", "健司"}) '@
    'Dim test = myDataView.FindRows("山本") 'A
    'DataGridView1.DataSource = test 'A
    を作成しました。
    実行してみると、「System.ArgumentException: 'インデックスを付加するキーには 1 値が必要ですが、2 値を取得しました。'」の例外が発生します。
    サンプルコードとどこが違うのでしょうか?
    サンプルのコードが正しく動いた場合は、一つの列の値の中で、二つのKYのどちらかがマッチした場合の行が返されると考えて宜しいのでしょうか?
    
    また、@をコメントアウトして、Aをコメントを外すと例外は発生しませんが、
    DataGridViewに期待する内容が表示されません。
    DataRowView[]をDataGridViewに表示するには、どのようにすれば良いのでしょうか?
    どなたか詳しい方教えてください。
    宜しくお願い致します。
    
    
    
    

違反を報告
返信 削除キー/


Mode/  Pass/


- Child Tree -