整合角色,分组权限。。实现页面显示内容

www5net 2014-05-24 10:11:11
sql数据库,vs2010网站,C#语言;
sql数据库表 如图:


后台代码:
int id = 15002;
string constr = ConfigurationManager.AppSettings["cn"].ToString();
for (int i = 20; i < 100; i++)
{
SqlConnection con1 = new SqlConnection(constr);
con1.Open();

string sqlstr5 = "select * from yz where yid= '" + id + "'and bid ='" + i + "' ";
SqlCommand cmd5 = new SqlCommand(sqlstr5, con1);
SqlDataReader sdr5 = cmd5.ExecuteReader();
if (sdr5.Read())
{
SqlConnection con2 = new SqlConnection(constr);
con2.Open();
string sqlstr6 = "select * from ym where id= ' " + i + "'and name ='" + HyperLink1.Text.ToString().Trim() + "'";
SqlCommand cmd6 = new SqlCommand(sqlstr6, con2);
SqlDataReader sdr6 = cmd6.ExecuteReader();
if (sdr6.Read())
{

HyperLink1.Visible = true;
}
else
{
HyperLink1.Visible = false;
}

sdr6.Close();


string sqlstr7 = "select * from ym where id= ' " + i + "'and name ='" + HyperLink2.Text.ToString().Trim() + "'";
SqlCommand cmd7 = new SqlCommand(sqlstr7, con2);
SqlDataReader sdr7 = cmd7.ExecuteReader();
if (sdr7.Read())
{

HyperLink2.Visible = true;
}
else
{
HyperLink2.Visible = false;
}

sdr7.Close();


string sqlstr8 = "select * from ym where id= ' " + i + "'and name ='" + HyperLink3.Text.ToString().Trim() + "'";
SqlCommand cmd8 = new SqlCommand(sqlstr8, con2);
SqlDataReader sdr8 = cmd8.ExecuteReader();
if (sdr8.Read())
{

HyperLink3.Visible = true;
}
else
{
HyperLink3.Visible = false;
}

sdr8.Close();


string sqlstr9 = "select * from ym where id= ' " + i + "'and name ='" + HyperLink4.Text.ToString().Trim() + "'";
SqlCommand cmd9 = new SqlCommand(sqlstr9, con2);
SqlDataReader sdr9 = cmd9.ExecuteReader();
if (sdr9.Read())
{

HyperLink4.Visible = true;
}
else
{
HyperLink4.Visible = false;
}

sdr9.Close();
con2.Close();
}
sdr5.Close();
con1.Close();

}

第一个表是 用户组
第二个 是页面
第三个 是 用户所在分组
有没有什么办法让for循环结果整合在一起,上面代码这个for循环只显示了最后一个结果,有没有大神指教一下:谢谢!
...全文
247 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
www5net 2014-06-12
  • 打赏
  • 举报
回复
Select distinct name from yh U inner join yz G on U.id=G.yid inner join ym P on p.id=G.bid or p.id=G.yid where u.id='15002'
www5net 2014-05-28
  • 打赏
  • 举报
回复
引用 14 楼 kingredapple 的回复:
[quote=引用 13 楼 u013722684 的回复:]
[quote=引用 12 楼 kingredapple 的回复:]
[quote=引用 11 楼 u013722684 的回复:]
[quote=引用 8 楼 kingredapple 的回复:]
[quote=引用 7 楼 u013722684 的回复:]
[quote=引用 4 楼 kingredapple 的回复:]
为什么不写个存储过程,将3张表join在一起,这样可以得到一个table,你再循环这个table不就行了


纯新手, 你说的应该想数据库的视图一样把,关键还是后面要实现新建角色,新建部门, 角色分部门的功能[/quote]

新建会有什么什么影响?[/quote]
取值的时候,新建了部门,要用for循环啊,,因为设置HyperLink控件Visible属性,这样循环下来也只能取到最后一个结果把[/quote]

Select distinct 页面名称 from 用户 U
inner join 用户组 G on U.x=G.x
inner join 页面 P on p.x=G.x
where U.ID = 用户ID
and 页面是可见的 = 1

这样不就是可以直接获取到这个用户有权限查看的页面,然后循环这个不就行了,希望没误解你的意思[/quote]

不行,你看代码是这样的把,

Select distinct name from yh U
inner join yz G on U.id=G.yid
inner join ym P on p.id=G.yid
where u.id='15002'
and name= '第三张页面'
[/quote]

我不理解你为什么要加name= '第三张页面' ,你是想判断这个用户对这个页面有没权限判断吗?
Select distinct name from yh U
inner join yz G on U.id=G.yid
inner join ym P on p.id=G.yid
where u.id='15002'
这个脚本应该就是用户15002有权限的所有页面,不在里面的页面就是没权限的。你说不行的问题是什么[/quote]

不行是只出来一个,如图:
name= '第三张页面' 这句是为了 HyperLink控件的显示隐藏做判断,HyperLink控件有四个
代码: string sqlstr6 = "select * from ym where id= ' " + i + "'and name ='" + HyperLink1.Text.ToString().Trim() + "'";
SqlCommand cmd6 = new SqlCommand(sqlstr6, con2);
SqlDataReader sdr6 = cmd6.ExecuteReader();
if (sdr6.Read())
{

HyperLink1.Visible = true;
}
else
{
HyperLink1.Visible = false;
}
kingredapple 2014-05-27
  • 打赏
  • 举报
回复
引用 11 楼 u013722684 的回复:
[quote=引用 8 楼 kingredapple 的回复:] [quote=引用 7 楼 u013722684 的回复:] [quote=引用 4 楼 kingredapple 的回复:] 为什么不写个存储过程,将3张表join在一起,这样可以得到一个table,你再循环这个table不就行了
纯新手, 你说的应该想数据库的视图一样把,关键还是后面要实现新建角色,新建部门, 角色分部门的功能[/quote] 新建会有什么什么影响?[/quote] 取值的时候,新建了部门,要用for循环啊,,因为设置HyperLink控件Visible属性,这样循环下来也只能取到最后一个结果把[/quote] Select distinct 页面名称 from 用户 U inner join 用户组 G on U.x=G.x inner join 页面 P on p.x=G.x where U.ID = 用户ID and 页面是可见的 = 1 这样不就是可以直接获取到这个用户有权限查看的页面,然后循环这个不就行了,希望没误解你的意思
www5net 2014-05-27
  • 打赏
  • 举报
回复
引用 8 楼 kingredapple 的回复:
[quote=引用 7 楼 u013722684 的回复:] [quote=引用 4 楼 kingredapple 的回复:] 为什么不写个存储过程,将3张表join在一起,这样可以得到一个table,你再循环这个table不就行了
纯新手, 你说的应该想数据库的视图一样把,关键还是后面要实现新建角色,新建部门, 角色分部门的功能[/quote] 新建会有什么什么影响?[/quote] 取值的时候,新建了部门,要用for循环啊,,因为设置HyperLink控件Visible属性,这样循环下来也只能取到最后一个结果把
www5net 2014-05-27
  • 打赏
  • 举报
回复
引用 9 楼 h733y 的回复:
要建立22关系,把3个扯一起永远扯不清。 什么意思? 角色跟用户是一对,用户跟部门是一对。都用用户关联。 新增一个用户,然后给予角色,给予部门。一个是组织结构,一个是功能权限,原本就是两回事。 你想要的那种智能能解决部分问题,扩展是硬伤。
这个角色和部门是多对多的,一个角色可以有好几个部门,也可以是独立的角色
kingredapple 2014-05-27
  • 打赏
  • 举报
回复
引用 13 楼 u013722684 的回复:
[quote=引用 12 楼 kingredapple 的回复:] [quote=引用 11 楼 u013722684 的回复:] [quote=引用 8 楼 kingredapple 的回复:] [quote=引用 7 楼 u013722684 的回复:] [quote=引用 4 楼 kingredapple 的回复:] 为什么不写个存储过程,将3张表join在一起,这样可以得到一个table,你再循环这个table不就行了
纯新手, 你说的应该想数据库的视图一样把,关键还是后面要实现新建角色,新建部门, 角色分部门的功能[/quote] 新建会有什么什么影响?[/quote] 取值的时候,新建了部门,要用for循环啊,,因为设置HyperLink控件Visible属性,这样循环下来也只能取到最后一个结果把[/quote] Select distinct 页面名称 from 用户 U inner join 用户组 G on U.x=G.x inner join 页面 P on p.x=G.x where U.ID = 用户ID and 页面是可见的 = 1 这样不就是可以直接获取到这个用户有权限查看的页面,然后循环这个不就行了,希望没误解你的意思[/quote] 不行,你看代码是这样的把, Select distinct name from yh U inner join yz G on U.id=G.yid inner join ym P on p.id=G.yid where u.id='15002' and name= '第三张页面' [/quote] 我不理解你为什么要加name= '第三张页面' ,你是想判断这个用户对这个页面有没权限判断吗? Select distinct name from yh U inner join yz G on U.id=G.yid inner join ym P on p.id=G.yid where u.id='15002' 这个脚本应该就是用户15002有权限的所有页面,不在里面的页面就是没权限的。你说不行的问题是什么
www5net 2014-05-27
  • 打赏
  • 举报
回复
引用 12 楼 kingredapple 的回复:
[quote=引用 11 楼 u013722684 的回复:] [quote=引用 8 楼 kingredapple 的回复:] [quote=引用 7 楼 u013722684 的回复:] [quote=引用 4 楼 kingredapple 的回复:] 为什么不写个存储过程,将3张表join在一起,这样可以得到一个table,你再循环这个table不就行了
纯新手, 你说的应该想数据库的视图一样把,关键还是后面要实现新建角色,新建部门, 角色分部门的功能[/quote] 新建会有什么什么影响?[/quote] 取值的时候,新建了部门,要用for循环啊,,因为设置HyperLink控件Visible属性,这样循环下来也只能取到最后一个结果把[/quote] Select distinct 页面名称 from 用户 U inner join 用户组 G on U.x=G.x inner join 页面 P on p.x=G.x where U.ID = 用户ID and 页面是可见的 = 1 这样不就是可以直接获取到这个用户有权限查看的页面,然后循环这个不就行了,希望没误解你的意思[/quote] 不行,你看代码是这样的把, Select distinct name from yh U inner join yz G on U.id=G.yid inner join ym P on p.id=G.yid where u.id='15002' and name= '第三张页面'
刘小安 2014-05-26
  • 打赏
  • 举报
回复
引用 3 楼 u013722684 的回复:
[quote=引用 2 楼 u010781074 的回复:] 完全就没明白楼主的意思,你是想对分组进行一个权限操作?
实现的是角色可以有自己的权限,也可以根据部门分配权限,当这两个都有的,取集合两个都能实现 现在要完成的是 这个角色在两个部门下 , 如图: 15002角色能访问第一页面 部门一能访问第三界面 部门二访问菜单设置,如图 : 当15002用户登录,显示 第一页面 第三页面 菜单设置 超链接[/quote] 那你可以先根据yid来判断,再根据部门来判断啊。
kingredapple 2014-05-26
  • 打赏
  • 举报
回复
为什么不写个存储过程,将3张表join在一起,这样可以得到一个table,你再循环这个table不就行了
www5net 2014-05-26
  • 打赏
  • 举报
回复
引用 2 楼 u010781074 的回复:
完全就没明白楼主的意思,你是想对分组进行一个权限操作?

实现的是角色可以有自己的权限,也可以根据部门分配权限,当这两个都有的,取集合两个都能实现
现在要完成的是
这个角色在两个部门下 , 如图:
15002角色能访问第一页面 部门一能访问第三界面 部门二访问菜单设置,如图 :
当15002用户登录,显示 第一页面 第三页面 菜单设置 超链接
刘小安 2014-05-26
  • 打赏
  • 举报
回复
完全就没明白楼主的意思,你是想对分组进行一个权限操作?
祥子爱游戏 2014-05-26
  • 打赏
  • 举报
回复
datatbale的操作,自定义列,foreach添加数据
h733y 2014-05-26
  • 打赏
  • 举报
回复
要建立22关系,把3个扯一起永远扯不清。 什么意思? 角色跟用户是一对,用户跟部门是一对。都用用户关联。 新增一个用户,然后给予角色,给予部门。一个是组织结构,一个是功能权限,原本就是两回事。 你想要的那种智能能解决部分问题,扩展是硬伤。
kingredapple 2014-05-26
  • 打赏
  • 举报
回复
引用 7 楼 u013722684 的回复:
[quote=引用 4 楼 kingredapple 的回复:] 为什么不写个存储过程,将3张表join在一起,这样可以得到一个table,你再循环这个table不就行了
纯新手, 你说的应该想数据库的视图一样把,关键还是后面要实现新建角色,新建部门, 角色分部门的功能[/quote] 新建会有什么什么影响?
www5net 2014-05-26
  • 打赏
  • 举报
回复
引用 4 楼 kingredapple 的回复:
为什么不写个存储过程,将3张表join在一起,这样可以得到一个table,你再循环这个table不就行了
纯新手, 你说的应该想数据库的视图一样把,关键还是后面要实现新建角色,新建部门, 角色分部门的功能
www5net 2014-05-26
  • 打赏
  • 举报
回复
引用 5 楼 u010781074 的回复:
[quote=引用 3 楼 u013722684 的回复:] [quote=引用 2 楼 u010781074 的回复:] 完全就没明白楼主的意思,你是想对分组进行一个权限操作?
实现的是角色可以有自己的权限,也可以根据部门分配权限,当这两个都有的,取集合两个都能实现 现在要完成的是 这个角色在两个部门下 , 如图: 15002角色能访问第一页面 部门一能访问第三界面 部门二访问菜单设置,如图 : 当15002用户登录,显示 第一页面 第三页面 菜单设置 超链接[/quote] 那你可以先根据yid来判断,再根据部门来判断啊。[/quote] 部门有个新建的功能 所以根据部门判断 后面就不好做了

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧