【问题标题】:dropdown values according to rights根据权利的下拉值
【发布时间】:2016-08-25 18:31:41
【问题描述】:

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

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;
       }

       

    }

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

更新

在 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?)  

我是怎么做到的?

【问题讨论】:

    标签: asp.net login dropdown admin-rights


    【解决方案1】:

    对于动态列表:

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

    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();
    

    【讨论】:

    • 但是下拉列表是另一种形式,登录是另一种形式..下拉列表中有几个值,我使用 linq 查询从数据库中获取..
    • 您在登录时或登录后何时显示下拉菜单?如果在 form.aspx 代码隐藏后登录后,您需要编写 linq 查询来获取用户性质(即管理员或普通),那么您可以处理下拉列表。
    • 但是我如何在登录页面中调用下拉列表控件
    • 好的,我如何确定当管理员登录时显示这些值,否则当用户登录时显示这些值..我如何配置我的下拉 linq 查询或 sp 登录.. ALTER 过程 [dbo].[splogin ] UserName nvarchar(50), Password nvarchar(50) as select UserName , Password from tbllogin where UserName=@UserName and Password=@Password
    • 为什么要在登录页面调用下拉列表控件?你有三种形式吗? login.aspx 、 form.aspx 和 webform1.aspx 。根据您的代码,登录成功重定向发生在 webform1.aspx 之后。但下拉菜单存在于 form.aspx 中。您需要在 webform1.aspx 中显示吗? .如果不使用三种形式,在 login.aspx 中,您将拥有用户名和密码字段以及一个按钮。 Onclick 按钮 Onsuccess 您将重定向到 form.aspx 页面。在 form.aspx 代码隐藏中,您将处理下拉列表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 2021-03-25
    • 2022-01-22
    • 1970-01-01
    • 2015-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多