• 关于ListBox和DataTable的一点儿心得


    ListBox的多选
    这个比较简单,通过循环就可以搞定。
    首先设置ListBox的选择模式为多行:

    Me.ListBox1.SelectionMode = ListSelectionMode.Multiple

    然后是处理选择:
    If Me.ListBox1.SelectedIndex > -1 Then
        
    Dim sValue As String
        
    Dim sText As String
        
    For i As Integer = 0 To Me.ListBox1.Items.Count() - 1
            
    If Me.ListBox1.Items(i).Selected Then
                sValue 
    &= Me.ListBox1.Items(i).Value & ","
                sText &= Me.ListBox1.Items(i).Text & ","
            End If
        
    Next
        
    Me.Label1.Text = "You choose: " & Left(sValue, sValue.Length - 1)
        
    Me.Label2.Text = "You choose: " & Left(sText, sText.Length - 1)
    Else
        
    Me.Label1.Text = "You have no choose!"
        Me.Label2.Text = ""
    End If


    这样就可以将ListBox里的选择内容变成以 ","  隔开的字符串。


    ListBox 的删除
    ListBox提供了两种删除Item的方法,Remove 和 RemoveAtt(Clear方法是移除了所有的对象,不能算是删除具体的Item)
    删除单个的选择比较容易,下面介绍一个删除多个选择的方法,当然也能删除单个了

    Do Until Me.ListBox1.SelectedIndex < 0
        
    Me.ListBox1.Items.RemoveAt(Me.ListBox1.SelectedIndex)
    Loop


    DataTable
    和上面的ListBox有点儿关系,在工作中遇到的情况。
    要求选择不同的人员到不同的ListBox中,每个ListBox代表一种角色。
    所添加的人不能同时出现在两个及其以上的ListBox中,也就是说每个人只能是一种角色。看下面的代码:
    Private Sub Check()
        
    Dim strMsg As String = ""
        Dim dt As New DataTable
        
    Dim colID As DataColumn
        
        
    '动态生成Column
        '
        '也可以下面的语句
        'Dim colID As DataColumn = New DataColumn("id", GetType(String))
        '
        colID = New DataColumn("id")
        colID.DataType 
    = GetType(String)
        
    '这句话是关键,设置该列为unique约束,不能插入重复的值
        colID.Unique = True 

        dt.Columns.Add(colID)

        
    If LstInsert(Me.ListBox1, dt) Then
            
    Me.Label3.Text = ""
        End If

        dt.Clear()
        dt.Dispose()

    End Sub


    Private Function LstInsert(ByVal lst As UI.WebControls.ListBox, ByRef dt As DataTable) As Boolean
        
    '生成DataRow
        Dim myNewRow As DataRow
        
    Dim flag As Boolean = True
        
    For i As Integer = 0 To Me.ListBox1.Items.Count - 1
            myNewRow 
    = dt.NewRow()
            myNewRow(
    "id"= Me.ListBox1.Items(i).Value
            
    Try
                dt.Rows.Add(myNewRow)
            
    Catch ex As Exception
                flag 
    = False
                
    'Me.ListBox1.ClearSelection()
                Me.ListBox1.Items(i).Selected = True
                
    Me.Label3.Text &= Me.ListBox1.Items(i).Text & " 重复!不能一人身兼多职! "
                'Exit For
            End Try
        
    Next

        
    Return flag

    End Function

    动态生成Unique列的方法适合于一次性插入不同数据的执行前检验。

    以上代码为测试使用,只是实现了功能要求,具体要用的话还要再酌情处理一下。
  • 相关阅读:
    hdu1852 Beijing 2008
    hdu-2582 f(n)---找规律+素数筛法
    hdu-1452 Happy 2004---因子和+逆元
    LightOJ-1028 Trailing Zeroes (I)---因子数目
    hdu1215 七夕节---因子和
    因子和&&因子数
    hdu-1492 The number of divisors(约数) about Humble Numbers---因子数公式
    hdu-2136 Largest prime factor---巧用素数筛法
    欧拉函数
    BZOJ4418: [Shoi2013]扇形面积并
  • 原文地址:https://www.cnblogs.com/freemantc/p/166595.html
Copyright © 2020-2023  润新知