Dim sqlQuery1 As String = "SELECT (convert(nvarchar(4),系統ID) + '(' + 系統名稱 + ')') as 系統 FROM [系統別資料表] WHERE 系統ID <> 0;"
dt_Sys = basic.reDataset(sqlQuery1, Nothing, Nothing)
For Each row As DataRow In dt_Sys.Rows
If row.Item(0).ToString = "0" Then
'way1 / way2
ComboBox1.Items.Add(row.Item(0).ToString)
End If
Next
'dataTable 是可以顯示正常的...
'MsgBox(dt_Sys.Rows(0)("系統").ToString)
(way1) combobox1 每個row都顯示 System.Data.DataRowView
ComboBox1.DisplayMember = "系統"
ComboBox1.ValueMember = "系統"
ComboBox1.DataSource = dt_Sys
[C# CODE] 參考... 轉型 DataRowView
foreach(var dr in cbo_客戶編號.Items)
{
MessageBox.Show(((DataRowView)dr)["中文名稱"].ToString());
}
(way2) 正常
For Each row As DataRow In dt_Sys.Rows
ComboBox1.Items.Add(row.Item(0).ToString)
Next
備註:
我的程式裡並沒有 SelectedIndexChanged & SelectedValueChanged 的事件...
參考的資料無法解決問題…
還是(use way2)照原方式處理
但效率比較差...
2013/02/18 改way1 又正常了XD
應該跟以下有關係: (把obj的方式 變更為 datatable 就解決了)
form1
'cbbox1 系統 資料繫結
Dim dt_Sys As DataTable = New DataTable
Public Property _dt_Sys() As DataTable
Get
_dt_Sys = dt_Sys
End Get
Set(ByVal value As DataTable)
dt_Sys = value
End Set
End Property
'Private obj As Object()
'Public Property cbbox1() As DataTable
' Get
' cbbox1 = obj
' End Get
' Set(ByVal value As Object)
' obj = value
' End Set
'End Property
'將 combobox1 的item 複製到 系統別的combobox1
'obj = New Object(ComboBox1.Items.Count - 1) {}
'ComboBox1.Items.CopyTo(obj, 0)
form2
'將form1的combobox1上的所有item 加入到 form2的combobox1
'ComboBox1.Items.AddRange(Me.MyCallForm.cbbox1)
參考:
combobox.DisplayMember property
自訂ComboBox的DisplayMember及ValueMember
DataSet&DataTable如何绑定下拉列表控件获取不重复的值,如何添加一列自定义文字,并在下拉列表控件中显示自定义文字
Combobox出现System.Data.DataRowView的原因,以及指定ValueMember的时机问题
C#comboBox的DataSource获取数据显示System.Data.DataRowView
#VB ComboBox 問題集
沒有留言:
張貼留言