机房重构—删除用户析DataGridView

主要思路

机房重构—删除用户析DataGridView_第1张图片


实例:

删除用户主要有以下几个小知识点

1.根据等级将该等级下的用户信息显示出来以及就是数据库里的数据如何显示到该控件上

2.判断是否选取了一行,并根据该行的ID将其在数据库里的信息删除,在控件里也删除

第一步:将所有等级在comboBox框里显示,并点击不同等级便显示不同等级的用户

<strong><span style="font-size:18px;"> Private Sub frmAddDelUser_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       <span style="color:#ff0000;"> '因为我们的等级是确定的而且固定的,所以我们直接添加就可以了,如果是不确定的这时我们就要用到遍历了</span>
        cmbGrade.Items.Add("一般用户")
        cmbGrade.Items.Add("操作员")
        cmbGrade.Items.Add("管理员")

    End Sub</span></strong>
<pre name="code" class="vb"><strong><span style="font-size:18px;">Private Sub cmbGrade_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbGrade.SelectedIndexChanged</span></strong>
<strong><span style="font-size:18px;">       <span style="color:#ff0000;"> ’根据选择等级来进行显示,显示地方法有两种一种是配置数据源,一种是不配置数据源,在此用的是配置好了数据源的显示</span>
        Dim InquireUser As New Facade.AddUserFAC
        Dim user As New Entity.EntityUsersWork
        Dim list As New List(Of Entity.EntityUsersWork)

        user.level = cmbGrade.Text
        list = InquireUser.InquireUser(user)
        If list.Count > 0 Then
            DataGridView1.AutoGenerateColumns = False     '不允许自动创建列
            Me.DataGridView1.DataSource = list            '显示信息
            Me.DataGridView1.Refresh()
        End If
    End Sub</span></strong>


 
 


第二步:判断是否选中了一行,没有进行提示

<strong><span style="font-size:18px;">Private Sub btnDel_Click(sender As Object, e As EventArgs) Handles btnDel.Click
<span style="color:#ff0000;">        '选中记录则提示谨慎删除,没有选中则提示进行选择 ,乍一看挺唬人,只一个该控件的方法selectrows就解决了,很多类似的方法该控件都已经封装好了,我们直接用就好了,此处messagebox控件的学习更是锦上添花</span>
        If Me.DataGridView1.SelectedRows.Count > 0 Then
            If MessageBox.Show("确定要删除选中的用户吗?删除后将不可恢复!!!", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                Del()'将删除数据库里面的操作写成了一个过程,直接写完全没有问题
            End If
        Else
            MessageBox.Show("请选择要删除的用户!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Return
        End If
    End Sub</span></strong>
<strong><span style="font-size:18px;">Public Sub Del()
        Dim k As Integer = Me.DataGridView1.SelectedRows.Count
        Dim user As New Entity.EntityUsersWork
        Dim deluserFAC As New Facade.AddUserFAC

        'DatagridView中是否存在数据
        If DataGridView1.Rows.Count > 0 Then
            '从下往上删, 防止沙漏效应
            For i As Integer = k To 1 Step -1
                '获取第N行的第一列的数据
                Dim usercode As String = DataGridView1.SelectedRows(i - 1).Cells("用户账号").Value.ToString
                '判断要删除的用户是否为当前用户
                If frmLogin.txtUserName.Text = usercode Then
                    MsgBox("不能删除当前正在使用的用户帐号")
                    Exit Sub
                Else
                    user.userID = usercode
                End If
                '从数据库执行删除的操作
                If deluserFAC.Deluser(user) Then
                    MsgBox("删除成功")
                Else
                    MsgBox("删除失败")
                    Return
                End If
                Call showUser()
            Next
        Else
            DataGridView1.Rows.Clear()
        End If
    End Sub</span></strong>
最后一步:刷新该控件里的数据

用法:

在使用的时候我们可以直接通过配置数据源来将数据表显示到控件上:

1.放到控件上会有一个小三角点击出来如图所示,点击添加数据源


机房重构—删除用户析DataGridView_第2张图片


2. 选择数据库,基本都是下一步



3.下一步直到该界面,选择自己的数据库,继续下一步


4.相关操作如图





5.效果图


机房重构—删除用户析DataGridView_第3张图片


不通过配置数据源显示数据的方法

我们直接将返回的数据datatable型或泛型直接赋给该控件的datasourse属性,不过需要借助代码来填写表头

<strong><span style="font-size:18px;">    DataGridView1.Columns(0).HeaderText = "卡号"
    DataGridView1.Columns(1).HeaderText = "学号"
    DataGridView1.Columns(2).HeaderText = "姓名"</span></strong>
这两种方法单纯从功能实现方面没有优劣之分,用哪一个主要还是根据具体情况,如删除用户很明确就是显示用户表的信息直接配置就可以了,像在用了模板方法时就只能在具体的子类中去用代码写表头了

关于如何显示的问题:

1.将表中的数据全部显示

2.只显示一部分

3.只显示自己想显示的几列

这个借助 DataGridView1.AutoGenerateColumns = False     '不允许自动创建列这句代码和相关sql查询语句就解决了

小技术:

判断是否选中了某一行

<strong><span style="font-size:18px;">If Me.DataGridView1.SelectedRows.Count > 0 Then</span></strong>

调取选中行中的某一值

<strong><span style="font-size:18px;">Dim usercode As String = DataGridView1.SelectedRows(i - 1).Cells("用户账号").Value.ToString'i是行数</span></strong>
<strong><span style="font-size:18px;">
</span></strong>
自动调整列宽

<strong><span style="font-size:18px;">Dim i As Integer
        For i = 0 To DataGridView1.Columns.Count - 1
            DataGridView1.Columns(i).Width = DataGridViewAutoSizeColumnMode.AllCells
        Next</span></strong>

基本属性

http://wenku.baidu.com/link?url=cQnlL429TvXMubyr_7Ki2bvbFp1CTTkcdzC6-T6WfdAJjuGiiu6qZeiJYEpQX8Vx8nRiUOS8r5rWTEEqXRmaSepsJmnnkW7jsBdO8HOlwNy

http://www.codefans.net/articles/568.shtml

学会站在巨人的肩膀上,当我们需要了要知道去哪找,整个看下来很多我们会用到的功能都有,只是有待我们去发现和巧妙的利用


你可能感兴趣的:(遍历,datagridview,机房重构删除用户)