根据权利下拉的值

时间:2016-09-09 05:10:15

标签: asp.net linq drop-down-menu rights

我有登录和webform1.aspx

下拉列表中的

**values** 
apples
oranges
grapes
factory
juices
banana
Grapes

我希望当我使用用户名admin和密码登录时,下拉列表中的值必须是工厂,因为当我使用此管理员用户名以外的其他人登录时,则要显示除工厂以外的其他值

当我用另一个用户名登录时,那么值在下拉列表中但不是完整列表只显示几个值,因为我想要除工厂以外的所有值

我试试这个sp,这个sp完美无缺

ALTER procedure [dbo].[list]
as
select fruits from tblReg
where fruits <>'' and 
fruits not in ('Factory')
and fruits  not like '%[0-9]%'
group by fruits 

并且我在linq 2nd查询中转换此sp

登录表单上的

我这样做

按钮单击

            try
            {
                loginmethod(txt_us.Text, txt_pwd.Text);
                Response.Redirect("WebForm1.aspx");
                Session["UserName"] = txt_us.Text;
            }
            catch
            {
                Label1.Text = ("");
                Label1.Visible = false;
            }

登录方法

  private bool loginmethod(string UserName, string Password)
    {

       Entities2 td = new Entities2();
        splogin_Result sp = td.splogin(UserName, Password).FirstOrDefault();
        if (sp.Password == txt_pwd.Text)
        {
            return true;
        }
        else
        {
            return false;
        }

  }

并在webform页面加载

 protected void Page_Load(object sender, EventArgs e)
        {
            Entities2 tea = new Entities2(); 
            if (!Page.IsPostBack)
            {
                if ((Session["UserName"] as string) == "admin")
                {
         //1st query 

regiondrop.DataSource = tea.tblReg.Where(x => x.Fruits== "Factory")
.Select(x => new { Fruits= x.Fruits, Value = x.Fruits}).Distinct()
 .ToList();

                }
                else
                { 
                 //2nd query 

          regiondrop.DataSource = tea.tblReg.AsEnumerable()
                               .Where(x => x.Fruits.All(char.IsLetter) &&
                                x.Fruits!= "" &&
                               x.Fruits!= "Factory")
                       .Select(x => new { Fruits=x.Fruits, Value=x.Fruits})
                       .Distinct().ToList();    
                }
                regiondrop.DataTextField = "Fruits";
                regiondrop.DataValueField = "Fruits";
                regiondrop.DataBind();
                Label4.Visible = false;

            }  

        }

1 个答案:

答案 0 :(得分:0)

为什么不映射表格&#39; tblReg&#39;使用用户角色并将Session [&#34; UserName&#34;]或Session [&#34; role&#34;]作为参数传递给SP并选择值并显示在ddl中。根据角色获取数据。

更新

现在在tbllogin中添加一个列角色(值= Admin或User)。

select role, UserName , Password from tbllogin where UserName=@UserName and Password=@Password  

在会话中存储角色(会话[&#34;角色&#34;])。

现在还在tblReg中添加一列并使用role映射 例如

RegId   fruits        Role
  1      Mango        user
  2      Apple        Admin
  3      banana       Admin

您需要从后面的代码传递sql参数

ALTER procedure [dbo].[list]
@role varchar(10)
as
select fruits from tblReg
where role = @role

最后在代码中绑定而不再检查角色。