using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DataAccess.Data;
namespace CTERP
{
public partial class FrmUsersRoleInfo : Form
{
public FrmUsersRoleInfo()
{
InitializeComponent();
}
LinkDataBase link = new LinkDataBase();
DataSet dsMix = null;
string sqlRole = "select * from sy_dictrole";
string sqlUsers = @"SELECT checkFlag = cast(0 as int),id,userid,fullname,description,password,grade,effectdate,expirydate,updatedby,lastupdate FROM users";
string tbRole = "sy_dictrole", tbUsers = "users";
private void FrmUsersRoleInfo_Load(object sender, EventArgs e)
{
link.CustomizeDataGridView(dgvRole);
link.CustomizeDataGridView(dgvUsers);
dsMix = link.ExecuteSQLDataSet(sqlRole, tbRole);
dgvRole.DataSource = dsMix;
dgvRole.DataMember = tbRole;
dsMix = link.ExecuteSQLDataSet(sqlUsers, tbUsers);
dgvUsers.DataSource = dsMix;
dgvUsers.DataMember = tbUsers;
int i_roleid = int.Parse(dgvRole.Rows[0].Cells[0].Value.ToString());
setCheckFlag(i_roleid);
}
private void btnSave_Click(object sender, EventArgs e)
{
if (dgvRole.Rows.Count < 0 || dgvRole.DataSource == null) return;
int currentRoleID = int.Parse(dgvRole.Rows[dgvRole.CurrentRow.Index].Cells[0].Value.ToString()); //得到当前行的roleid
DataTable dtTmp = DbHelperSQL.Instance.GetDataTable("select * from sy_personvsrole where roleid=" + currentRoleID + "");
for (int i = 0; i < dgvUsers.Rows.Count; i++)
{
int currentCheckFlag = int.Parse(dgvUsers.Rows[i].Cells[0].Value.ToString()); //得到当前行选择标记
int currentPersonID = int.Parse(dgvUsers.Rows[i].Cells[1].Value.ToString()); //得到当前行用户ID
int i_length = dtTmp.Select("personid=" + currentPersonID + "").Length; //从表sy_personvsrole中查找相同personid的记录
if (currentCheckFlag == 0)
{
if (i_length > 0) //没选中标记,在表sy_personvsrole中确实存在(表示:取消选中),则从表sy_personvsrole中删除
{
string i_delete_sql = "delete from sy_personvsrole where personid=" + currentPersonID + "";
DbHelperSQL.Instance.ExcuteNonQuery(i_delete_sql);
}
}
else
{
if (i_length == 0) //已选中标记,在表sy_personvsrole中不存在(表示:新选中的),则在表sy_personvsrole中插入此条新记录
{
string i_insert_sql = "insert into sy_personvsrole select " + currentPersonID + "," + currentRoleID + ",'" + string.Empty + "'";
DbHelperSQL.Instance.ExcuteNonQuery(i_insert_sql);
}
}
}
MessageBox.Show("数据保存成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
private void btnExit_Click(object sender, EventArgs e)
{
this.Close();
}
private void dgvRole_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex != -1)
{
for (int i = 0; i < dgvUsers.Rows.Count; i++)
{
dgvUsers.Rows[i].Cells[0].Value = 0;
}
//dgvUsers.DataSource = DbHelperSQL.Instance.GetDataTable(sqlUsers);////到底谁的效率更好?
int i_roleid = int.Parse(dgvRole.Rows[e.RowIndex].Cells[0].Value.ToString());
setCheckFlag(i_roleid);
}
}
//设置复选框的状态
private void setCheckFlag(int roleid)
{
string sqlTmp = @"select personid from sy_personvsrole where roleid=" + roleid + "";
DataTable dtTmp = DbHelperSQL.Instance.GetDataTable(sqlTmp);
for (int i = 0; i < dgvUsers.Rows.Count; i++)
{
string str_id = dgvUsers.Rows[i].Cells[1].Value.ToString().Trim();
if (dtTmp.Select("personid=" + int.Parse(str_id) + "").Length > 0)
{
dgvUsers.Rows[i].Cells[0].Value = 1;//表示选中
}
}
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DataAccess.Data;
namespace CTERP
{
public partial class FrmUsersRoleInfo : Form
{
public FrmUsersRoleInfo()
{
InitializeComponent();
}
LinkDataBase link = new LinkDataBase();
DataSet dsMix = null;
string sqlRole = "select * from sy_dictrole";
string sqlUsers = @"SELECT checkFlag = cast(0 as int),id,userid,fullname,description,password,grade,effectdate,expirydate,updatedby,lastupdate FROM users";
string tbRole = "sy_dictrole", tbUsers = "users";
private void FrmUsersRoleInfo_Load(object sender, EventArgs e)
{
link.CustomizeDataGridView(dgvRole);
link.CustomizeDataGridView(dgvUsers);
dsMix = link.ExecuteSQLDataSet(sqlRole, tbRole);
dgvRole.DataSource = dsMix;
dgvRole.DataMember = tbRole;
dsMix = link.ExecuteSQLDataSet(sqlUsers, tbUsers);
dgvUsers.DataSource = dsMix;
dgvUsers.DataMember = tbUsers;
int i_roleid = int.Parse(dgvRole.Rows[0].Cells[0].Value.ToString());
setCheckFlag(i_roleid);
}
private void btnSave_Click(object sender, EventArgs e)
{
if (dgvRole.Rows.Count < 0 || dgvRole.DataSource == null) return;
int currentRoleID = int.Parse(dgvRole.Rows[dgvRole.CurrentRow.Index].Cells[0].Value.ToString()); //得到当前行的roleid
DataTable dtTmp = DbHelperSQL.Instance.GetDataTable("select * from sy_personvsrole where roleid=" + currentRoleID + "");
for (int i = 0; i < dgvUsers.Rows.Count; i++)
{
int currentCheckFlag = int.Parse(dgvUsers.Rows[i].Cells[0].Value.ToString()); //得到当前行选择标记
int currentPersonID = int.Parse(dgvUsers.Rows[i].Cells[1].Value.ToString()); //得到当前行用户ID
int i_length = dtTmp.Select("personid=" + currentPersonID + "").Length; //从表sy_personvsrole中查找相同personid的记录
if (currentCheckFlag == 0)
{
if (i_length > 0) //没选中标记,在表sy_personvsrole中确实存在(表示:取消选中),则从表sy_personvsrole中删除
{
string i_delete_sql = "delete from sy_personvsrole where personid=" + currentPersonID + "";
DbHelperSQL.Instance.ExcuteNonQuery(i_delete_sql);
}
}
else
{
if (i_length == 0) //已选中标记,在表sy_personvsrole中不存在(表示:新选中的),则在表sy_personvsrole中插入此条新记录
{
string i_insert_sql = "insert into sy_personvsrole select " + currentPersonID + "," + currentRoleID + ",'" + string.Empty + "'";
DbHelperSQL.Instance.ExcuteNonQuery(i_insert_sql);
}
}
}
MessageBox.Show("数据保存成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
private void btnExit_Click(object sender, EventArgs e)
{
this.Close();
}
private void dgvRole_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex != -1)
{
for (int i = 0; i < dgvUsers.Rows.Count; i++)
{
dgvUsers.Rows[i].Cells[0].Value = 0;
}
//dgvUsers.DataSource = DbHelperSQL.Instance.GetDataTable(sqlUsers);////到底谁的效率更好?
int i_roleid = int.Parse(dgvRole.Rows[e.RowIndex].Cells[0].Value.ToString());
setCheckFlag(i_roleid);
}
}
//设置复选框的状态
private void setCheckFlag(int roleid)
{
string sqlTmp = @"select personid from sy_personvsrole where roleid=" + roleid + "";
DataTable dtTmp = DbHelperSQL.Instance.GetDataTable(sqlTmp);
for (int i = 0; i < dgvUsers.Rows.Count; i++)
{
string str_id = dgvUsers.Rows[i].Cells[1].Value.ToString().Trim();
if (dtTmp.Select("personid=" + int.Parse(str_id) + "").Length > 0)
{
dgvUsers.Rows[i].Cells[0].Value = 1;//表示选中
}
}
}
}
}