设置字符串长度并在30个字符后添加“|”

时间:2016-10-11 09:09:03

标签: vb.net

我将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中解决,所需的输出是:

enter image description here

这是来自普通Combobox的图像 - 我使用DrawItem从DB值(Names / Surnames)创建多列组合框,用于绘制数据和Combobox Enter之间的行以加载数据。一旦您从中选择了某些内容,DisplayMember就可以工作(只有1个值)并且不会复制组合框。

现在我正在尝试使用CellPainting事件和Cell Enter事件对Datagridview ComboboxColumn执行相同但不能执行此操作。此处发布的最新建议具有最佳输出:

enter image description here

DisplayMember不起作用,并且在DatagridView的新行中重复项目如果从Combobox中选择一些项目。

2 个答案:

答案 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