我刚做的一个TreeView的CheckBox进行选中插入数据库,从数据库中读取数据后让CheckBox勾选的代码!...
??? #region 綁定角色
??? /// <summary>
??? /// 綁定權限信息
??? /// </summary>
??? protected void BindgvRoles()
??? {
??????? string sql = "select * from GM_FileKind";
??????? DataTable dt = OADBHelper.GetDataTable(sql);
??????? this.gvRoles.DataSource = dt;
??????? this.DataBind();
??? }
??? #endregion
??? #region TreeView 表員工表的顯示至TreeView控件
??? /// <summary>
??? /// Tree綁定
??? /// </summary>
??? public void BindTree()
??? {
??????? this.tvUsers.Nodes.Clear();
??????? string sql = "select * from Accounts_UserDepartment";
??????? DataView dv = OADBHelper.GetDataTable(sql).DefaultView;
??????? //dv.RowFilter = "Kind=0";
??????? foreach (DataRowView drv in dv)
??????? {
??????????? TreeNode tn = new TreeNode();
??????????? tn.Text = drv["Dept"].ToString();
??????????? tn.Value = drv["AutoID"].ToString();
??????????? //tn.NavigateUrl = drv["KURL"].ToString();
??????????? tn.SelectAction = TreeNodeSelectAction.Expand;
??????????? tn.Expanded = false;
??????????? this.tvUsers.Nodes.Add(tn);
??????????? addChildNodes(tn);
??????? }
??? }
??? /// <summary>
??? /// 綁定子節點
??? /// </summary>
??? /// <param name="tn"></param>
??? public void addChildNodes(TreeNode tn)
??? {
??????? string sql = "select UserID,RealName from Accounts_Users where Dept='" + tn.Text + "'";
??????? DataView dv = OADBHelper.GetDataTable(sql).DefaultView;
??????? foreach (DataRowView drv in dv)
??????? {
??????????? TreeNode childtn = new TreeNode();
??????????? childtn.Text = drv["RealName"].ToString();
??????????? childtn.Value = drv["UserID"].ToString();
??????????? //childtn.NavigateUrl = drv["KURL"].ToString();
??????????? childtn.Expanded = false;
??????????? tn.ChildNodes.Add(childtn);
??????????? addChildNodes(childtn);
??????? }
??? }
??? #endregion
??? #region 從數據庫中讀取數據,然后勾選根節點的相應的CheckBox
??? /// <summary>
??? /// 從數據庫中讀取數據,然后勾選根節點的相應的CheckBox
??? /// </summary>
??? /// <param name="RoleId"></param>
??? protected void BindTreeRoot(int RoleId, TreeNodeCollection treenode)
??? {
??????? string sql = "";
??????? foreach (TreeNode nodes in treenode)
??????? {
??????????? if (nodes.ChildNodes.Count > 0)
??????????? {
??????????????? //查找所有權限的人的部門Id
??????????????? sql = "select Distinct[DepId] from GM_Roles where FKId=" + RoleId;
??????????????? DataView dv = OADBHelper.GetDataTable(sql).DefaultView;
??????????????? foreach (DataRowView drv in dv)
??????????????? {
??????????????????? foreach (TreeNode node in treenode)
??????????????????? {
??????????????????????? if (drv["DepId"].ToString() == node.Value.ToString())
??????????????????????? {
??????????????????????????? node.Checked = true;
??????????????????????? }
??????????????????????? BindTreeRoot(RoleId, node.ChildNodes);
??????????????????? }
??????????????? }
??????????? }
??????????? else
??????????? {
??????????????? //根據角色ID得到相應的的員工ID
??????????????? sql = "select UserID from GM_Roles where FKId='" + RoleId + "'";
??????????????? DataView dv = OADBHelper.GetDataTable(sql).DefaultView;
??????????????? foreach (DataRowView drv in dv)
??????????????? {
??????????????????? foreach (TreeNode node in treenode)
??????????????????? {
??????????????????????? if (drv["UserID"].ToString() == node.Value.ToString())
??????????????????????? {
??????????????????????????? node.Checked = true;
??????????????????????? }
??????????????????????? BindTreeRoot(RoleId, node.ChildNodes);
??????????????????? }
??????????????? }
??????????? }
??????? }
??? }
??? #endregion
??? #region 設置權限
??? /// <summary>
??? /// 設置權限
??? /// </summary>
??? /// <param name="sender"></param>
??? /// <param name="e"></param>
??? protected void lkbtnModify_Command(object sender, CommandEventArgs e)
??? {
??????? int Id = Convert.ToInt32(e.CommandArgument.ToString());
??????? ViewState["RoleId"] = Id;
??????? BindTree();
??????? string sql = "select FKName from GM_FileKind where FKId=" + Id;
??????? lblRoles.Text = OADBHelper.GetString(sql);
??????? BindTreeRoot(Id, this.tvUsers.Nodes);
??? }
??? #endregion
??? #region? 權限設置操作
??? /// <summary>
??? /// 權限設置操作
??? /// </summary>
??? /// <param name="sender"></param>
??? /// <param name="e"></param>
??? protected void btnModify_Click(object sender, EventArgs e)
??? {
??????? if (this.lblRoles.Text == "沒有選擇角色")
??????? {
??????????? Response.Write("<script>alert('請選擇一個角色名稱!');</script>");
??????? }
??????? else
??????? {
??????????? int RoleId = Convert.ToInt32(ViewState["RoleId"].ToString());
??????????? string sql = "select UserId from UserId where FKId=" + RoleId;
??????????? DeleteRoles(Convert.ToInt32(ViewState["RoleId"].ToString()));
??????????? this.GetCheckBoxChecked(this.tvUsers.Nodes);
??????????? Response.Write("<script>alert('角色設置成功!');</script>");
??????? }
??? }
??? #endregion
??? #region? 添加選定的人到角色表(checkbox選中的,插入數據庫)
??? /// <summary>
??? /// 選擇要添加的角色
??? /// </summary>
??? /// <param name="treeNode"></param>
??? private void GetCheckBoxChecked(TreeNodeCollection treeNode)
??? {
??????? foreach (TreeNode node in treeNode)
??????? {
??????????? if (node.Checked)
??????????? {
??????????????? if (node.ChildNodes.Count == 0)
??????????????? {
??????????????????? //執行保存??? 
??????????????????? int UserId = Convert.ToInt32(node.Value.ToString());
??????????????????? InertRoleMember(Convert.ToInt32(ViewState["RoleId"].ToString()), UserId, Convert.ToInt32(ViewState["DepatId"].ToString()));
??????????????????? this.GetCheckBoxChecked(node.ChildNodes);
??????????????? }
??????????????? else
??????????????? {
??????????????????? ViewState["DepatId"] = node.Value.ToString();
??????????????????? GetCheckBoxChecked(node.ChildNodes);
??????????????? }
??????????? }
??????????? else
??????????? {
??????????????? if (node.ChildNodes.Count > 0)
??????????????? {
??????????????????? this.GetCheckBoxChecked(node.ChildNodes);
??????????????? }
??????????? }
??????? }
??? }
??? #endregion
??? #region 通過部門ID得到所有的人員Id
??? /// <summary>
??? /// 通過部門ID得到所有的人員Id
??? /// </summary>
??? /// <param name="DeptId"></param>
??? /// <returns></returns>
??? protected int GetUserIdByDeptId(int DeptId)
??? {
??????? string strSql = "select Dept from Accounts_UserDepartment where AutoID=" + DeptId;
??????? string DeptName = OADBHelper.GetString(strSql);? //得到部門名稱
??????? strSql = "select UserID from Accounts_Users where Dept='" + DeptName + "'";
??????? int UserId = Convert.ToInt32(OADBHelper.GetString(strSql));
??????? return UserId;
??? }
??? #endregion
??? #region 根據選中的節點設置相應的權限人到數據庫
??? /// <summary>
??? /// 根據選中的節點設置相應的權限人
??? /// </summary>
??? /// <param name="classId"></param>
??? /// <param name="RoleId"></param>
??? protected void InertRoleMember(int FKId, int UserId,int DeptId)
??? {
??????? string sql = @"insert into GM_Roles(FKId,UserId,DepId)values('" + FKId + "','" + UserId + "','" + DeptId + "')";
??????? OADBHelper.GetInt(sql);
??? }
??? #endregion
??? #region 根據角色Id刪除相應的權限
??? /// <summary>
??? /// 根據角色Id刪除相應的權限
??? /// </summary>
??? /// <param name="RoleId"></param>
??? protected void DeleteRoles(int RoleId)
??? {
??????? string sql = @"delete from GM_Roles where FKId=" + RoleId;
??????? OADBHelper.GetInt(sql);
??? }
??? #endregion
??? #region C#復選框的操作
??? /// <summary>
??? /// 復選框改變時的操作
??? /// </summary>
??? /// <param name="sender"></param>
??? /// <param name="e"></param>
??? protected void tvUsers_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
??? {
??????? SetChildChecked(e.Node);
??? }
??? /// <summary>
??? /// 根據父節點情況來選擇子節點
??? /// </summary>
??? /// <param name="parentNode"></param>
??? private void SetChildChecked(TreeNode parentNode)
??? {
??????? foreach (TreeNode node in parentNode.ChildNodes)
??????? {
??????????? node.Checked = parentNode.Checked;
??????????? if (node.ChildNodes.Count > 0)
??????????? {
??????????????? SetChildChecked(node);
??????????? }
??????? }
??? }
??? #endregion
總結
以上是生活随笔為你收集整理的我刚做的一个TreeView的CheckBox进行选中插入数据库,从数据库中读取数据后让CheckBox勾选的代码!...的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 别为iptables日志付出太多-一种L
- 下一篇: 开始学java咯!~~~
