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列的方法适合于一次性插入不同数据的执行前检验。

    以上代码为测试使用,只是实现了功能要求,具体要用的话还要再酌情处理一下。
  • 相关阅读:
    微服务架构技术栈选型手册(万字长文)
    Visual Studio 2013 always switches source control plugin to Git and disconnect TFS
    Visual Studio 2013 always switches source control plugin to Git and disconnect TFS
    MFC对话框中使用CHtmlEditCtrl
    ATL开发 ActiveX控件的 inf文件模板
    ActiveX: 如何用.inf和.ocx文件生成cab文件
    Xslt 1.0中使用Array
    如何分隔两个base64字符串?
    An attempt was made to load a program with an incorrect format
    JQuery 公网 CDN
  • 原文地址:https://www.cnblogs.com/freemantc/p/166595.html
Copyright © 2011-2022 走看看