PDA

View Full Version : سوال: افزودن نقش به نقشهاي کاربر که توسط کاما از هم جدا شدن



bftarane
جمعه 24 آذر 1391, 15:47 عصر
سلام.
من يه فيلد در جدول کاربران دارم که به شکل زير نقشها رو نگه مي داره مثلاً Admin,Manager,User
همونطور که در شکل مي بينيد من يه چک باکس ليست دارم که تمام نقشهاي موجود در اون نمايش داده ميشه
96662
و يه ليست باکس هم دارم که نقشهاي يک کاربر خاص در اون نمايش داده ميشه
حالا سعي دارم کاري کنم کاربر هر کدوم از چک باکس ها رو که کليک کرد نقش جديد به نقشهاي قبلي اضافه بشه
و کدهاي زير رو نوشتم

protected void chkl_roles_SelectedIndexChanged(object sender, EventArgs e)
{
string mystring = GetRolesByUsername(ViewState["Id"].ToString());

List<string> rolesList = new List<string>();
rolesList.Add(mystring);

string SelectedRole = chkl_roles.SelectedItem.Text;
rolesList.Add(SelectedRole);
if (mystring !="")
{
string Roles = string.Join(",", rolesList);
UpdateRoles(Roles, ViewState["Id"].ToString());
}
else
{
MyDALBase.ExecuteNoneQuery(System.Data.CommandType .StoredProcedure, "InsertRole", new SqlParameter[]{
new SqlParameter("@Role",SelectedRole)
});
}

1- حالا مسئله اينجاست که وقتي يه نقش اضافه ميشه و مي خوام حالا دوباره يه نقش ديگه اضافه کنم همون نقش قبلي اضافه ميشه
يعني من چک مثلاً Manager رو مي زنم ولي نقش Admin (همون نقشي که يه خورده پيش اضافه شده بود)
دوباره اضافه ميشه
خودم فکر مي کنم بايد چک نقش قبلي رو يه طوري بردارم بدون اينکه پست بک اتفاق بيفته
ولي نمي دونم چطور بايد اين کار رو بکنم

2- سوال بعدي اينه که چطوردر نقشهاي قبلي بگردم تا نقش تکراري اضافه نشه؟

اگه راه بهتري هم سراغ داريد براي افزودن نقش در ميون بزارين لطفاً.

mahmood_4246
جمعه 24 آذر 1391, 23:19 عصر
1 - وفتی نقشی رو میخوای حذف یا اضافه کنی برای جستجو از LIKE استفاده کن که هم تکراری اضافه نشه هم به راحتی بتونی حذف کنی
2 - برای رول یه جدول در نظر بگیر >> کد رول و نام رول فیلدهاش هستند
یه جدول دیگه به اسم userRole اضافه کن که 2تا فیلد داره 1> کد کاربر 2> کد رول -- که کد کاربر و کد رول رو توش نگه داره
حالا برای جستجو یه نقش میونید ساده ترین کوئری Select رو بزنی

خوبی این حالت اینه که اگه بخواهی به صفحاتت امنیت بدی خیلی راحت از طریق کد رول و کد صفحه میشه این کار رو کرد
سرعت جستجو در این حالت بالاتره

hamed_hossani
یک شنبه 26 آذر 1391, 13:43 عصر
من يه چک باکس ليست دارم که تمام نقشهاي موجود در اون نمايش داده ميشه
به نظر من لازم نیست listBox بزاری
هر کدام نقش ها را که داشته باشه checkBox مربوطه ، تیک بخوره
توی دیتابیسم یک فیلد رشته ای بزار و انها را با , از هم جدا کن
و بعد هنگام لود کردن >وبرایش
string roles="rolles ha ke vared shode va ba , joda shode";
string[] role=roles.split(',');
و بعد با مقدار چک باکس ها بررسی کن هرکدوم وجود داشت تیک بزن

saeed_sho
یک شنبه 26 آذر 1391, 15:33 عصر
از کنترل چک باکس لیست برای نشان دادن نقش ه استفاده کن وبا همه نقش ها پرش کن بعد نقش های کاربرو سلکت بزن و با دو تا حلقه ی تو در تو چک باکس لیست رو تیک های لازمشو بزن

برای اضافه کردن یه شرط بزار اگه آیتم کلیک شده جاری checked برابر true بود در جدول نقش رو اضافه کنید کن در غیر اینصورت نقش رو از فیلد مربوطه حذف کن
اینکارو هم با آپدیت پنل بکنید تا با هر کلیک رفرش نشه