private void checkQuyenThaotac_ItemCheck(object sender, ItemCheckEventArgs e) { XL2.cChucNang item = checkQuyenThaotac.Items[e.Index] as XL2.cChucNang; if (e.NewValue == CheckState.Checked) { item.IsYes = true; } else if (e.NewValue == CheckState.Unchecked) { item.IsYes = false; } }
private void SetQuyenThaotac(DataTable tableChucnang) { // lấy dataSource danh sách chức năng, set default false nếu ko có row nào if (tableChucnang == null || tableChucnang.Rows.Count == 0) { for (int i = 0; i < checkQuyenThaotac.Items.Count; i++) { XL2.cChucNang chucnang = checkQuyenThaotac.Items[i] as XL2.cChucNang; if (chucnang == null) { continue; } checkQuyenThaotac.SetItemCheckState(i, CheckState.Unchecked); chucnang.IsYes = false; } } else // tồn tại chức năng //duyệt từng chức năng trong danh sách chức năng, kiểm tra xem chức năng đó có trong csdl table ko? nếu có thì check, ko thì uncheck { for (int i = 0; i < checkQuyenThaotac.Items.Count; i++) { XL2.cChucNang chucnang = checkQuyenThaotac.Items[i] as XL2.cChucNang; if (chucnang == null) { continue; } int id = chucnang.ID; DataRow[] arrRows = tableChucnang.Select("MenuID = " + id, "MenuID asc"); // tìm trong table chức năng đó bật hay tắt, if (arrRows.Length == 0) // ko tồn tại phân quyền --> uncheck { checkQuyenThaotac.SetItemCheckState(i, CheckState.Unchecked); chucnang.IsYes = false; } else // tồn tại phân quyền -->? kiểm tra xem nó có enable ko { bool isYes = (bool)arrRows[0]["IsYes"]; checkQuyenThaotac.SetItemCheckState(i, (isYes) ? CheckState.Checked : CheckState.Unchecked); chucnang.IsYes = isYes; } } } checkQuyenThaotac.Update(); }
private void btnCapNhat_Click(object sender, EventArgs e) { if (XL2.KiemtraKetnoiCSDL() == false) { return; } // lấy ID tài khoản đang chọn DataRowView rowView = lstTaikhoan.SelectedItem as DataRowView; int userid = (int)rowView["UserID"]; // update phòng ban thao tác và status cho phép hay ko #region lấy ds phòng ban 1. được thao tác, 2.check kết công List <cPhongBan> dsphongbanChecked = new List <cPhongBan>(); List <cPhongBan> dsphongbanUnCheck = new List <cPhongBan>(); // đưa về root node trước khi thực hiện var root = treePhongBan.TopNode; GetTopLevelNode(ref root); // mỗi lần duyệt node sẽ làm root node chuyển về parent của node cuối nên phải trả về node gốc để duyệt từ đầu while (root.PrevNode != null) { root = root.PrevNode; } GetNode_DuocThaotac_CheckKetcong(root, dsphongbanChecked, dsphongbanUnCheck); #endregion // duyệt qua từng phòng ban và update lại phòng ban đó được cho phép hay ko for (int i = 0; i < dsphongbanChecked.Count; i++) { SqlDataAccessHelper.ExecNoneQueryString( @" update DeptPrivilege set IsYes = @IsYes where IDD = @IDD and UserID = @UserID IF @@ROWCOUNT=0 INSERT INTO DeptPrivilege (UserID,IDD,IsYes) VALUES (@UserID,@IDD,@IsYes) " , new string[] { "@UserID", "@IsYes", "@IDD" } , new object[] { userid, 1, dsphongbanChecked[i].ID }); } for (int i = 0; i < dsphongbanUnCheck.Count; i++) { SqlDataAccessHelper.ExecNoneQueryString( @" update DeptPrivilege set IsYes = @IsYes where IDD = @IDD and UserID = @UserID IF @@ROWCOUNT=0 INSERT INTO DeptPrivilege (UserID,IDD,IsYes) VALUES (@UserID,@IDD,@IsYes) " , new string[] { "@UserID", "@IsYes", "@IDD" } , new object[] { userid, 0, dsphongbanUnCheck[i].ID }); } //duyệt từng chức năng và update lại cho phép hay ko cho phép chức năng đó List <XL2.cChucNang> lstchucnang = checkQuyenThaotac.DataSource as List <XL2.cChucNang>; for (int i = 0; i < checkQuyenThaotac.Items.Count; i++) { XL2.cChucNang item = checkQuyenThaotac.Items[i] as XL2.cChucNang; bool check = item.IsYes; int menuid = item.ID; SqlDataAccessHelper.ExecNoneQueryString( @" update MenuPrivilege set IsYes = @IsYes where UserID = @UserID and MenuID = @MenuID IF @@ROWCOUNT=0 INSERT INTO MenuPrivilege (UserID,MenuID,IsYes) VALUES (@UserID,@MenuID,@IsYes) " , new string[] { "@UserID", "@IsYes", "@MenuID" } , new object[] { userid, check, menuid }); } ACMessageBox.Show("Cập nhật phân quyền thành công.", "Thông báo", 2000); point1: lstTaikhoan_SelectedValueChanged(lstTaikhoan, null); }