📄 frmmanage.vb
字号:
Imports System.Data
Imports System.Data.SqlClient
Public Class frmManage
Inherits System.Windows.Forms.Form
Private iCurrentLine As Integer = 0
Private dvUser As DataView
Private dvRight As DataView
#Region " Windows 窗体设计器生成的代码 "
Public Sub New()
MyBase.New()
'该调用是 Windows 窗体设计器所必需的。
InitializeComponent()
'在 InitializeComponent() 调用之后添加任何初始化
End Sub
'窗体重写 dispose 以清理组件列表。
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Windows 窗体设计器所必需的
Private components As System.ComponentModel.IContainer
'注意: 以下过程是 Windows 窗体设计器所必需的
'可以使用 Windows 窗体设计器修改此过程。
'不要使用代码编辑器修改它。
Friend WithEvents dgdMember As System.Windows.Forms.DataGrid
Friend WithEvents clbRight As System.Windows.Forms.CheckedListBox
Friend WithEvents lblUser As System.Windows.Forms.Label
Friend WithEvents lblRight As System.Windows.Forms.Label
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.dgdMember = New System.Windows.Forms.DataGrid
Me.clbRight = New System.Windows.Forms.CheckedListBox
Me.lblUser = New System.Windows.Forms.Label
Me.lblRight = New System.Windows.Forms.Label
CType(Me.dgdMember, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'dgdMember
'
Me.dgdMember.CaptionVisible = False
Me.dgdMember.DataMember = ""
Me.dgdMember.HeaderForeColor = System.Drawing.SystemColors.ControlText
Me.dgdMember.Location = New System.Drawing.Point(0, 56)
Me.dgdMember.Name = "dgdMember"
Me.dgdMember.Size = New System.Drawing.Size(264, 164)
Me.dgdMember.TabIndex = 0
'
'clbRight
'
Me.clbRight.AllowDrop = True
Me.clbRight.CheckOnClick = True
Me.clbRight.Items.AddRange(New Object() {"商品资料维护", "供货商资料维护", "客户资料维护", "进货单", "销售单", "库存查询", "权限管理"})
Me.clbRight.Location = New System.Drawing.Point(320, 56)
Me.clbRight.Name = "clbRight"
Me.clbRight.Size = New System.Drawing.Size(144, 164)
Me.clbRight.TabIndex = 1
'
'lblUser
'
Me.lblUser.Location = New System.Drawing.Point(0, 24)
Me.lblUser.Name = "lblUser"
Me.lblUser.TabIndex = 2
Me.lblUser.Text = "用户"
'
'lblRight
'
Me.lblRight.Location = New System.Drawing.Point(320, 24)
Me.lblRight.Name = "lblRight"
Me.lblRight.TabIndex = 3
Me.lblRight.Text = "权限"
'
'frmManage
'
Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)
Me.ClientSize = New System.Drawing.Size(488, 277)
Me.Controls.Add(Me.lblRight)
Me.Controls.Add(Me.lblUser)
Me.Controls.Add(Me.clbRight)
Me.Controls.Add(Me.dgdMember)
Me.Name = "frmManage"
Me.Text = "权限管理"
CType(Me.dgdMember, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
End Sub
#End Region
Private Sub frmManage_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Dim db As DataBase = New DataBase
dvUser = _
db.RunSelectSQL("SELECT 姓名, 部门, 用户编号 FROM 用户清单")
dvRight = _
db.RunSelectSQL("SELECT 用户编号, 权限名称 FROM 权限清单")
dvUser.AllowEdit = False
dvUser.AllowNew = False
Dim ts As New DataGridTableStyle
Dim aColumnTextColumn As DataGridNoActiveCellColumn
Dim numCols As Integer = dvUser.Table.Columns.Count
Dim i As Integer
For i = 0 To numCols - 1
aColumnTextColumn = New DataGridNoActiveCellColumn
With aColumnTextColumn
.MappingName = dvUser.Table.Columns(i).ColumnName
.HeaderText = dvUser.Table.Columns(i).ColumnName
.NullText = ""
End With
ts.GridColumnStyles.Add(aColumnTextColumn)
Next
ts.MappingName = dvRight.Table.TableName
Me.dgdMember.TableStyles.Add(ts)
'进行数据绑定
Me.dgdMember.DataSource = dvUser
If Me.dvUser.Count <> 0 Then
SetCheckBoxList(dvUser.Item(0)("用户编号"))
End If
db.Dispose()
End Sub
Private Sub dgdMember_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles dgdMember.Click
Try
'判断两次Click事件是否是发生在同一行
If iCurrentLine <> dgdMember.CurrentRowIndex Then
'不是发生在同一行,用iCurrentLine记住当前行
iCurrentLine = dgdMember.CurrentRowIndex
'设置CheckBoxList的显示
SetCheckBoxList( _
dvUser.Item(dgdMember.CurrentRowIndex)("用户编号"))
End If
Catch ex As Exception
MessageBox.Show("错误")
End Try
End Sub
Private Sub SetCheckBoxList(ByVal UserId As String)
'清空数据表
dvRight.Table.Clear()
Dim db As DataBase = New DataBase
dvRight = _
db.RunSelectSQL("SELECT 用户编号, 权限名称 FROM 权限清单")
db.Dispose()
Try
dvRight.RowFilter = "用户编号='" + UserId.Trim() + "'"
Dim iCount As Integer
For iCount = 0 To clbRight.Items.Count - 1
clbRight.SetItemCheckState(iCount, _
CheckState.Unchecked)
Next
Dim i, j As Integer
Dim s, d As String
'根据用户权限设置相应的选项
If clbRight.Items.Count <> 0 Then
For i = 0 To dvRight.Count - 1
For j = 0 To clbRight.Items.Count - 1
s = dvRight.Item(i)("权限名称")
d = clbRight.Items(j)
If s.Trim() = d.Trim() Then
clbRight.SetItemCheckState(j, _
CheckState.Checked)
Exit For
End If
Next
Next
End If
Catch ex As Exception
MessageBox.Show("错误")
End Try
End Sub
Private Sub UpdateDB()
'清空用户的权限
Dim db As DataBase = New DataBase
db.RunDelOrInsSQL("delete from 权限清单 where 用户编号 ='" _
+ dvUser.Item(Me.iCurrentLine)("用户编号") + "'")
Dim iCount As Integer
'添加用户权限
If Me.clbRight.CheckedItems.Count <> 0 Then
Dim strInsSQL As String = ""
For iCount = 0 To Me.clbRight.CheckedItems.Count - 1
strInsSQL += "insert into 权限清单(用户编号,部门,"
strInsSQL += "权限名称) values('"
strInsSQL += dvUser.Item(iCurrentLine)("用户编号").ToString().Trim
strInsSQL += "','"
strInsSQL += dvUser.Item(iCurrentLine)("部门").ToString().Trim
strInsSQL += "','" + Me.clbRight.CheckedItems(iCount).ToString()
strInsSQL += "'); "
Next
db.RunDelOrInsSQL(strInsSQL)
End If
db.Dispose()
End Sub
Private Sub clbRight_SelectedIndexChanged(ByVal sender _
As Object, ByVal e As System.EventArgs) _
Handles clbRight.SelectedIndexChanged
UpdateDB()
End Sub
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -