您的位置:首页 > 其它

机房重构—删除用户析DataGridView

2016-03-06 16:29 225 查看
主要思路



实例:

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

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.放到控件上会有一个小三角点击出来如图所示,点击添加数据源





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



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



4.相关操作如图



5.效果图





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

我们直接将返回的数据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

学会站在巨人的肩膀上,当我们需要了要知道去哪找,整个看下来很多我们会用到的功能都有,只是有待我们去发现和巧妙的利用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息