0

次の列を持つ users という名前のテーブルがあります

User_id,user_name,user_pwd,First_Name,Middle_Name,Last_Name and user_type.

dst という名前のデータセットがあり、データセットに user というテーブルを作成しました。ここで、テーブル user のすべての行のuser_NameFirst_Name、をリストボックスに入力したいと思います。Last_name

一度に 1 つの列の値を追加できますが、各行の複数の列の値をリストボックスに追加する方法がわかりません

Dim dt As DataTable = Dst.Tables("user")

For Each row As DataRow In dt.Rows
    lstUsers.Items.Add(row("User_Name"))
Next

上記のコードは完全に機能しますが、First_name と last_name をリスト ボックスに同時に追加したいと考えています。

4

4 に答える 4

1

あなたが持っているのと同じアプローチを使用しますが、必要なすべての値を1つの文字列に入れます。

Dim dt As DataTable = Dst.Tables("user")

For Each row As DataRow In dt.Rows
    Dim sItemTemp as String
    sItemTemp = String.Format("{0},{1},{2}", row("User_Name"), row("First_Name"), row("Last_Name"))
    lstUsers.Items.Add(sItemTemp)
Next

String.Format()関数は.ToString()すべてのパラメーターを呼び出します。

この場合、ifrow(ColumnName)は空の文字列だけNULL valueを返します.ToString()

于 2013-03-16T14:38:37.690 に答える
0

次の 2 つの選択肢があります。

  1. リストボックスの使用:

ListBox を使用するには、フォントを courier new のような固定幅のフォントに設定し (列が整列するように)、次のように項目を追加します。

For Each row As DataRow In dt.Rows
    lstUsers.Items.Add(RPAD(row("User_Name"),16) & RPAD(row("First_Name"),16) & RPAD(row("Last_Name"),16))
Next

RPAD 関数は次のように定義されます。

Function RPAD(a As Object, LENGTH As Object) As String
    Dim X As Object
    X = Len(a)
    If (X >= LENGTH) Then
        RPAD = a : Exit Function
    End If
    RPAD = a & Space(LENGTH - X)
End Function

必要に応じて LENGTH 引数を調整します。少なくとも 1 つのスペースにもう 1 つ追加します。列幅をハードコーディングする必要があるため、このソリューションは理想的とは言えません。

  1. ListBox の代わりに DataGridView コントロールを使用します。これは本当に最適なオプションです。必要に応じて、行全体を選択するオプションを設定し、CellBorderStyle を SingleHorizo​​ntal に設定することで、ListBox のように動作させることもできます。デザイナーで列を定義しますが、幅を設定する必要はありません。列は自動サイズ調整できます。以下のコードでそのオプションを設定します。それでも幅を設定したい場合は、AutoSizeColumnsMode 行をコメントアウトします。

グリッドを設定して行を追加するコードは次のようになります。

    g.Rows.Clear() ' some of the below options are also cleared, so we set them again
    g.AutoSizeColumnsMode = DataGridViewAutoSizeColumnMode.AllCells
    g.CellBorderStyle = DataGridViewCellBorderStyle.SingleHorizontal
    g.SelectionMode = DataGridViewSelectionMode.FullRowSelect
    g.AllowUserToAddRows = False
    g.AllowUserToDeleteRows = False
    g.AllowUserToOrderColumns = True
    For Each row As DataRow In dt.Rows
        g.Rows.Add(row("User_Name"), row("First_Name"), row("Last_Name"))
    Next
于 2016-05-04T01:39:48.553 に答える
0

今までに問題を解決したかもしれませんが、私のような他のユーザーが問題を抱えている可能性があります.
上記の回答は私にとってはうまくいきましたが、私が望むものに従って簡単な方法で同じ回答を見つけました..

cmd = New SqlCommand("select User_Name, First_Name, Last_Name from User")
  Dim dr As SqlDataReader = cmd.ExecuteReader(YourConnectionString)

  If dr.HasRows Then
        Do While dr.Read
                        lst.Items.Add(dr.Item(0).ToString & " " & dr.Item(1).ToString & " " & dr.Item(2).ToString)
        Loop
  End If

これは私にとってはうまくいきましたが、間違った方法かもしれませんが、簡単だと思いました:)

于 2016-08-29T13:00:03.340 に答える