nth4
24-05-2009, 23:52
Mình đang dùng đệ quy để xét phân quyền cho các user.
1. Ban đầu mình cho chạy đệ quy các menu của MenuStrip để xét enable = false.
2. Sau đó ứng với user nào đc quyền truy cập form thì mình sẽ cho chạy đệ quy 1 lần nữa và xét enable = true
Như vậy có vấn đề gì ko các bạn, mình phảii chạy đệ quy đến 2 lần, nên khi người đăng nhập mình thấy nó xử lý hơi chậm.
Mình đang suy nghĩ cách đơn giản hơn!
CSDL phân quyền mình như sau:
1. Người dùng: (username, pass)
2. Form: (maForm, tenForm)
3. Phân quyền: (id (tự tăng), username, maForm, đc_sử_dụng (true/false))
// De Quy
private void DisableMenu(MenuStrip menu, bool f)
{
if (menu == null)
return;
foreach (ToolStripMenuItem _item in menu.Items)
{
DisableItem(_item, f);
}
}
private void DisableItem(ToolStripMenuItem parentItem, bool f)
{
if (parentItem != null && parentItem.DropDownItems.Count > 0)
{
foreach (ToolStripMenuItem _item in parentItem.DropDownItems)
{
DisableItem(_item, f);
}
}
try
{
if(parentItem.Tag != null)
parentItem.Enabled = f;
}
catch { }
}
private void EnableMenu(MenuStrip menu, string maForm)
{
if (menu == null)
return;
foreach (ToolStripMenuItem _item in menu.Items)
{
EnableItem(_item, maForm);
}
}
private void EnableItem(ToolStripMenuItem parentItem, string maForm)
{
if (parentItem != null && parentItem.DropDownItems.Count > 0)
{
foreach (ToolStripMenuItem _item in parentItem.DropDownItems)
{
EnableItem(_item, maForm);
}
}
try
{
if (parentItem.Tag.ToString() == maForm)
parentItem.Enabled = true;
}
catch { }
}
__
1. Ban đầu mình cho chạy đệ quy các menu của MenuStrip để xét enable = false.
2. Sau đó ứng với user nào đc quyền truy cập form thì mình sẽ cho chạy đệ quy 1 lần nữa và xét enable = true
Như vậy có vấn đề gì ko các bạn, mình phảii chạy đệ quy đến 2 lần, nên khi người đăng nhập mình thấy nó xử lý hơi chậm.
Mình đang suy nghĩ cách đơn giản hơn!
CSDL phân quyền mình như sau:
1. Người dùng: (username, pass)
2. Form: (maForm, tenForm)
3. Phân quyền: (id (tự tăng), username, maForm, đc_sử_dụng (true/false))
// De Quy
private void DisableMenu(MenuStrip menu, bool f)
{
if (menu == null)
return;
foreach (ToolStripMenuItem _item in menu.Items)
{
DisableItem(_item, f);
}
}
private void DisableItem(ToolStripMenuItem parentItem, bool f)
{
if (parentItem != null && parentItem.DropDownItems.Count > 0)
{
foreach (ToolStripMenuItem _item in parentItem.DropDownItems)
{
DisableItem(_item, f);
}
}
try
{
if(parentItem.Tag != null)
parentItem.Enabled = f;
}
catch { }
}
private void EnableMenu(MenuStrip menu, string maForm)
{
if (menu == null)
return;
foreach (ToolStripMenuItem _item in menu.Items)
{
EnableItem(_item, maForm);
}
}
private void EnableItem(ToolStripMenuItem parentItem, string maForm)
{
if (parentItem != null && parentItem.DropDownItems.Count > 0)
{
foreach (ToolStripMenuItem _item in parentItem.DropDownItems)
{
EnableItem(_item, maForm);
}
}
try
{
if (parentItem.Tag.ToString() == maForm)
parentItem.Enabled = true;
}
catch { }
}
__