فرض:
جدولی به نام tbl_Permisstions با ستونهای PermissionId و Title و ParentId
و tbl_Users_Permissions با ستونهای id و PermissionId و UserId
کد پر کردن treeview رو به اینصورت اصلاح کنید (کوئری را برحسب parentId به صورت صعودی مرتب کنید و به ترتیب شروع به ساخت گره ها کنید)
DataTable allPermissions = db.dataTableSelect(
@"select PermissionId, Title, ParentId
from tbl_Permisstions
where ParentId = 0 OR ParentId in (select PermissionId from tbl_Permisstions)
order by ParentId");
for (var i = 0; i < allPermissions.Rows.Count; i++)
{
DataRow dtRow = allPermissions.Rows[i];
string permissionId = Convert.ToString(dtRow["PermissionId"]);
string permissionTitle = Convert.ToString(dtRow["Title"]);
string permissionParentId = Convert.ToString(dtRow["ParentId"]);
TreeNode node = new TreeNode
{
Text = permissionTitle,
Name = permissionId
};
if (permissionParentId == "0")
{
treeView1.Nodes.Add(node);
}
else
{
TreeNode[] parentNodes = treeView1.Nodes.Find(permissionParentId, true);
if (parentNodes.Length > 0)
{
parentNodes[0].Nodes.Add(node);
}
}
}
برای تیک زدن سطح دسترسی هر شخص به صورت زیر
DataTable dt = db.dataTableSelect(@"SELECT permissionID FROM tbl_Users_Persmissions WHERE id_user=" + userID);
foreach (DataRow row in dt.Rows)
{
string permissionID = Convert.ToString(row["permissionID"]);
TreeNode[] nodes = treeView1.Nodes.Find(permissionID, true);
if (nodes.Length > 0)
{
nodes[0].Checked = true;
}
}