''' <summary>
''' 新的填充函数,使用了泛型,适用于ComboBox,listBox 和 CheckedListBox , DataGridViewComboBoxColumn
''' 用反射操作 comboBox 或者 checkedListBox 或者 ListBox, 向其中填充可供选择的选项(来源于数据库查询)
''' </summary>
''' <typeparam name="T">comboBox 或者 checkedListBox</typeparam>
''' <param name="_control">具体的控件</param>
''' <param name="CmdTxt"></param>
''' <param name="ValueMember">值的选项</param>
''' <param name="DisplayMember">显示的选项</param>
''' <returns></returns>
''' <remarks></remarks>
Public Sub fillBoxes_T(Of T)(ByRef _control As T, CmdTxt As String, ValueMember As String, DisplayMember As String)
Dim rs As ADODB.Recordset = Nothing
Dim RecCount As Integer = 0
Dim dt As New DataTable
Dim da As New OleDbDataAdapter()
Dim dt As New DataTable
Dim da As New OleDbDataAdapter()
Dim cmd As New ADODB.Command
cmd.CommandType = CommandType.Text
cmd.ActiveConnection = conn
cmd.CommandText = CmdTxt
cmd.CommandType = CommandType.Text
cmd.ActiveConnection = conn
cmd.CommandText = CmdTxt
rs = cmd.Execute
If Not rs.EOF Then
' RecCount = rs.RecordCount
da.Fill(dt, rs)
Dim ty As Type = _control.GetType()
ty.GetProperty("DataSource").SetValue(_control, dt, Nothing)
ty.GetProperty("DisplayMember").SetValue(_control, DisplayMember, Nothing)
ty.GetProperty("ValueMember").SetValue(_control, ValueMember, Nothing)
ty.GetProperty("DisplayMember").SetValue(_control, DisplayMember, Nothing)
ty.GetProperty("ValueMember").SetValue(_control, ValueMember, Nothing)
End If
dt = Nothing
da = Nothing
rs.Close()
da = Nothing
rs.Close()
cmd.ActiveConnection = Nothing
End Sub
‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘
' 下面是具体应用
dim strCmd = "select code TPTR,rpad(code,length(code),' ')||rpad(' ',2,' ')||code_desc TPTR_desc from tbl_aml_config where code_category='TPTR' order by code_sequence"
fillBoxes_T(cboTPTR, strCmd, "TPTR", "TPTR_desc")