zoukankan      html  css  js  c++  java
  • 关于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列的方法适合于一次性插入不同数据的执行前检验。

    以上代码为测试使用,只是实现了功能要求,具体要用的话还要再酌情处理一下。
  • 相关阅读:
    2018暑假辽宁省集训划水记
    gcd以及exgcd入门讲解
    tuple必须加上逗号
    stressapptest工具
    Linux Centos7设置UTF-8编码,防止中文乱码
    [python3.7]列表
    【转载】]基于RedHatEnterpriseLinux V7(RHEL7)下SPEC CPU 2006环境搭建以及测试流程 介绍、安装准备、安装、config文件以及运行脚本介绍
    Linux Test Project(一)
    SPECCPU2006 Spec2006 使用说明
    测试用例使用!!!!!!!!!!!!!
  • 原文地址:https://www.cnblogs.com/freemantc/p/166595.html
Copyright © 2011-2022 走看看