根据权利下拉值

时间:2016-08-25 07:13:29

标签: asp.net login dropdown admin-rights

该下拉列表中有多个值..

e.g.
Car
Truck
Bike
Drink
Factory

还有另一个登录页面Login.aspx。 登录代码

  protected void Button1_Click(object sender, EventArgs e)
    {
        try
        {
            //Label1.BackColor = "F8D8D7";
            loginmethod(txt_us.Text, txt_pwd.Text);

            Response.Redirect("WebForm1.aspx");
        }
        catch( Exception )
        {
            Label1.Text = ("Incorrect UserName/Password");
            Label1.Visible = true;
        }
        txt_us.Text = "";
        txt_pwd.Text = "";


    }
    public bool  loginmethod(string UserName,string Password)
    {
        TrackDataEntities1 td = new TrackDataEntities1();

       splogin1_Result sp = td.splogin1(UserName, Password).FirstOrDefault();
       if(sp.Password==txt_pwd.Text)
       {
           return true;
       }
       else
       {
           return false;
       }



    }

现在有两个用户..管理员和用户。现在我想当管理员登录然后用他们的id和密码然后他看到这个列表中的一些值,当用户登录时,他会看到这个列表中的一些值,例如当管理员登录时,他可能只能看到Factory值和用户登录然后他能够看到除工厂

以外的所有值

更新

在login.aspx中的

我保存用户名是会话

Session["UserName"] = txt_us.Text;

在form.aspx

首先我创建sp

ALTER procedure [dbo].[spadminlist]
as
select Region from tblReg
where Region in ('Factory')

然后我在form.aspx

中添加这个sp

//这个用于选择所有值的linq查询

    var list = tea.tblReg.AsEnumerable()
              .Where(x => !x.Region.Any(char.IsDigit)  && (x.Region != ""))
              .GroupBy(x => x.Region)
              .Select(x => new { Region = x.Key, Value = x.Key })
              .ToList();

//这是管理员

     if (Session["UserName"] = "admin")
        {
            List<spadminlist_Result> admin = tea.spadminlist().ToList();
        }

并填写下拉列表

 if (!Page.IsPostBack)
            {
                regiondrop.DataSource = list;
                regiondrop.DataTextField = "Region";
                regiondrop.DataValueField = "Region";
                regiondrop.DataBind();

                Label4.Visible = false;



            }

但是这显示错误以及我如何用admin sp填充下拉列表,因为有查询

Error   3   Cannot implicitly convert type 'object' to 'bool'. An explicit conversion exists (are you missing a cast?)  

我是怎么做到的?

1 个答案:

答案 0 :(得分:0)

对于动态列表:

从后端获取用户是管理员还是普通用户。

List<string> menuItems = new List<string>();
if(logged_user == "ADMIN")
{
  menuItems.add("item1");
  menuItems.add("item2");
}
else 
{
  menuItems.add("item1");
  menuItems.add("item2");
} 
DropDownList1.DataTextField = "user_name";
DropDownList1.DataValueField = "user_id";
DropDownList1.DataSource = menuItems;
DropDownList1.DataBind();

对于静态列表:

if(logged_user == "ADMIN")
{
  DropDownList1.Items.FindByText("Item1").Enabled = false;

  OR
        DropDownList1.Items[i].Enabled = false;
}
else 
{
  Same process as above.
} 
DropDownList1.DataTextField = "user_name";
DropDownList1.DataValueField = "user_id";
DropDownList1.DataBind();