我将DB中的2个值添加到组合框中(多列组合框的连接)。问题是我无法插入“|”在特定位置的第一个值之后,所有组合框项目将用“|”均匀分离。我正在尝试插入“|”在30个字符之后,即使字符串不长也是如此。这是我的代码:
Using dad As New OracleDataAdapter(SQL, Myconn)
dad.Fill(dtb)
End Using
'I tried with Lset(dtb.Rows(i)(0),30) but not working - any better ideas ?
For i As Integer = 0 To dtb.Rows.Count
MyCombo.Items.Add(dtb.Rows(i)(0) & " * " & dtb.Rows(i)(1))
i = i + 1
Next
任何有用的帮助。如果我不清楚,请询问!
编辑:
这应该在Datagrid中的ComboboxColumn中解决,所需的输出是:
这是来自普通Combobox的图像 - 我使用DrawItem从DB值(Names / Surnames)创建多列组合框,用于绘制数据和Combobox Enter之间的行以加载数据。一旦您从中选择了某些内容,DisplayMember就可以工作(只有1个值)并且不会复制组合框。
现在我正在尝试使用CellPainting事件和Cell Enter事件对Datagridview ComboboxColumn执行相同但不能执行此操作。此处发布的最新建议具有最佳输出:
DisplayMember不起作用,并且在DatagridView的新行中重复项目如果从Combobox中选择一些项目。
答案 0 :(得分:0)
也许:
For i As Integer = 0 To dtb.Rows.Count - 1
Dim col1 As String = dtb.Rows(i).Field(Of String)(0)
Dim col2 As String = dtb.Rows(i).Field(Of String)(1)
col1 = If(col1.Length < 30, col1.PadRight(30) & "|", col1.Insert(30, "|"))
col2 = If(col2.Length < 30, col2.PadRight(30) & "|", col2.Insert(30, "|"))
MyCombo.Items.Add(col1 & " * " & col2)
Next
答案 1 :(得分:0)
尝试类似:
MyCombo.Items.Add(dtb.Rows(i)(0).ToString().PadRight(30) & " | * " & dtb.Rows(i)(1).ToString())
修改强>
试试这段代码:
For Each r As DataRow In dtb.Rows
Dim col1 As String = If(r.IsNull(0), "", r.Field(Of String)(0).Trim())
Dim col2 As String = If(r.IsNull(1), "", r.Field(Of String)(1).Trim())
MyCombo.Items.Add(String.Format("{0} | {1}", col1.PadRight(30), col2.PadRight(30)))
Next