根据权利下拉列表中的值
values in dropdown according to rights
我已经登录 webform1.aspx
下拉列表中的值
**values**
apples
oranges
grapes
factory
juices
banana
Grapes
我想当我使用用户名 admin 和密码登录时,下拉列表中的值只能是工厂值,而当我使用非此管理员用户名登录时,我想显示除工厂值以外的其他值
而且当我用另一个用户名登录时,值在下拉列表中但不是完整列表,只显示几个值,因为我想要除 factory
之外的所有值
我尝试了这个 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 第二次查询中转换这个 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;
}
}
并在网络表单页面加载
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;
}
}
为什么不将 table 'tblReg' 映射到用户角色并将 Session["UserName"] 或 Session["role"] 作为参数传递给 SP 和 select 值并显示在 ddl.Simply 根据角色获取数据。
已更新
现在在 tbllogin 中添加一列角色(值 = Admin 或 User)。
select role, UserName , Password from tbllogin where UserName=@UserName and Password=@Password
在会话中存储角色(Session["role"])。
现在还在 tblReg 中添加一列并映射角色
例如
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
最终在代码中绑定而不再次检查角色。
我已经登录 webform1.aspx
下拉列表中的值
**values**
apples
oranges
grapes
factory
juices
banana
Grapes
我想当我使用用户名 admin 和密码登录时,下拉列表中的值只能是工厂值,而当我使用非此管理员用户名登录时,我想显示除工厂值以外的其他值
而且当我用另一个用户名登录时,值在下拉列表中但不是完整列表,只显示几个值,因为我想要除 factory
之外的所有值我尝试了这个 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 第二次查询中转换这个 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;
}
}
并在网络表单页面加载
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;
}
}
为什么不将 table 'tblReg' 映射到用户角色并将 Session["UserName"] 或 Session["role"] 作为参数传递给 SP 和 select 值并显示在 ddl.Simply 根据角色获取数据。
已更新
现在在 tbllogin 中添加一列角色(值 = Admin 或 User)。
select role, UserName , Password from tbllogin where UserName=@UserName and Password=@Password
在会话中存储角色(Session["role"])。
现在还在 tblReg 中添加一列并映射角色 例如
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
最终在代码中绑定而不再次检查角色。