一个项目即将完工,后来填加了一个权限功能 权限低的用户某些BUTTON的功能不能使用 并且要弹出提示 说明权限不够
权限的值是拿SESSION传递的我个人有2个方案:
一:在页面加载完后 在OnPreRender事件里 判断SESSION的值 如果权限低的用户 就把那些不能使用的BUTTON的Enabled属性设为FALSE
结果因为没实现提示效果而被驳回
二:在每个BUTTON按钮的事件里加SESSION的判断语句 如果权限低的 就弹出提示
结果因为改动量太大而被驳回。在此请教各位CSDN大侠们 求一个好的方案!!!
灌水的朋友请不要来,请尽量说的详细一点,适当给出部分代码。
急要!!!万分感谢!!!
权限的值是拿SESSION传递的我个人有2个方案:
一:在页面加载完后 在OnPreRender事件里 判断SESSION的值 如果权限低的用户 就把那些不能使用的BUTTON的Enabled属性设为FALSE
结果因为没实现提示效果而被驳回
二:在每个BUTTON按钮的事件里加SESSION的判断语句 如果权限低的 就弹出提示
结果因为改动量太大而被驳回。在此请教各位CSDN大侠们 求一个好的方案!!!
灌水的朋友请不要来,请尽量说的详细一点,适当给出部分代码。
急要!!!万分感谢!!!
连提示都省了
并把BUTTON的Text属性值设为"权限不够"
该表主要字段:
用户id
窗体名称
功能ID(比如:更新、删除、查询等功能,每一个对应一个唯一标识)
是否具有相应权限创建一个类 声明一个方法,比方命名为checkUserRight
private int checkUserRight(string UserId,string FormName,Hashtable rightHt)
{
...
}参数:
UserId 当前帐户ID
FormName 当前窗体名称
rightHt 按钮控件功能与名称键值对这个方法根据哈希表中键值对以及当前用户及窗体名称到用户功能权限分配表(tUserFormRight)查询是否具备权限,
并根据权限设置按钮的enable或者visible属性在每个窗体的page_load事件中调用该类的方法就可以
这个方法的性能取决于用户多少以及窗体多少抛砖引玉
在后台代码中 public string sessionFlag = "false";
protected void Page_Load(object sender, EventArgs e)
{
if (Session["yourSessionName"] != null)//你的session判断方法
{
sessionFlag = "true";
}
}按钮事件 <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click1" OnClientClick="return check()" />java脚本 function check()
{
var sessionFlag="<%=sessionFlag %>";
if(sessionFlag== "true")
{
return true;
}
else
{
alert("没有权限")
return false;
}
}
1、新建类,把Button包在里面,新建个检查session的方法vb.net
public class myButton
Inherits Button
public function checksession() as bolean
'这里写检查session的代码
end functionend class2、重新写一个Button,自动检查,这样所有的button都变味儿了建议选择第一项
keyake863 的方法很好 但是也就相当于我的方案二改动量太大了。。
还是谢谢你们
期待更好的方案
能用ASP。NET 具体的写一下吗??!!!!
如 public bool check(string uid,int 权限id)
{
string sql="……………………………………“
if( )
return true;
else
return false;
}
每个按钮事件先验证
if(!check(Session["uid"].Tostring,"本页面的权限id"))
{
Response.Write(alert())//弹出提示!!
}
还是要把每一个BUTTON都弄过来 这方案肯定不能被接受还有2个IMAGEBUTTON 是在DATAGRID的每个行里面的期待更好的方案
被采纳的方案直接100分
{
if (Session["yourSessionName"] == null)//你的session判断方法
{
for (int i = 0; i < form1.Controls.Count; i++)
{
if (form1.Controls[i].GetType()== typeof(Button))
{
Button myBut = (Button)form1.Controls[i];
myBut.OnClientClick = "return check()";
}
}
}
}
function check()
{
alert("没有权限");
return false;
}
很好的办法。。我需要的就是这个 那请问datagrid里面的 IMAGEBUTTON 怎么办?? 也要屏蔽的怎么办???
不可以吗?
页面部分:
<HTML>
<HEAD>
<title>test2</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<script language=javascript>
function showMessage()
{
alert('ok');
}
</script>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:Button id="Button1" style="Z-INDEX: 101; LEFT: 304px; POSITION: absolute; TOP: 128px" runat="server"
Text="Button"></asp:Button>
</form>
</body>
</HTML>
代码部分:
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!IsPostBack)
{
Hashtable ht = new Hashtable();
ht.Add("b1",Button1);
Ctest2 ct = new Ctest2();
ct.myTest(ht);
}
}类Ctest2
using System;
using System.Collections;
using System.Web.UI.WebControls;namespace dlpecjt.test
{
/// <summary>
/// Ctest2 的摘要说明。
/// </summary>
public class Ctest2
{
public Ctest2()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public void myTest(Hashtable ht)
{
Button btTemp = (Button)ht["b1"];
btTemp.Attributes.Add("onclick","showMessage();");
}
}
}
是不是写
if ((Button)form1.Controls[i].ID == "btn_add")
{
((Button)form1.Controls[i]).OnClientClick = "return check()"; }
这样好象不行 该怎么写啊。。!!!
原本我是这样写的
object a = Session["popedom"];
if (a != "3")
{
foreach (DataGridItem item in grid.Items)
{
ImageButton imb_Edit = (ImageButton)item.FindControl("ib_Edit");
ImageButton imb_Delete = (ImageButton)item.FindControl("ib_Del");
imb_Delete.Enabled = false; imb_Edit.Enabled = false;
}
if (a == "1")
{
btn_add.Enabled = false;
}
}
现在改成
foreach (DataGridItem item in grid.Items)
{
ImageButton imb_Edit = (ImageButton)item.FindControl("ib_Edit");
ImageButton imb_Delete = (ImageButton)item.FindControl("ib_Del");
imb_Delete.OnClientClick = "return check()";
imb_Edit.OnClientClick = "return check()";
} if (a == "1")
{
btn_add.OnClientClick = "return check()";
}
这样就可以了 嘿嘿 谢谢哦 keyake863 100分是你的 说到做到 非常感谢大家