恭喜,你发布的帖子
发布于 2021-08-08 11:13:14
1楼
main()
{
string dp;
dp = myUiDpName() + "."; //注册当前用户变化的回调函数
dpConnect("SetPermission",dp+"UserName:_online.._value");
DebugN("myUiDpName", dp);
}
void SetPermission(string dp , string username)
{
string name = getUserName(); //获取用户名
mapping mp = getUserDataByNamePVSS(name); //获取组别
string gps = mp["GroupIds"];
dyn_string dps = strsplit(gps, ";"); //组别数组,多组用;隔开
bool flag = false;
int levelID;
dpGet("System1:Test.P1:_online.._value", levelID);//获取控件关联的 授权Level信息,自定义变量;
dyn_errClass err = getLastError();
if (dynlen(err) > 0)
{
errorDialog(err);
return;
}
for(int i = 1; i <= dynlen(dps); ++i)
{
int id;
sscanf(dps[i], "%d", id); //字符串转整型
mapping np = getGroupDataPVSS(dps[i]); //根据GroupID获取组的信息
string PerSet = np["PERMSET"];//组的授权信息,32为"01"字符串,
string s = substr(PerSet, 32 - levelID, 1); //授权信息是逆序转换,获取对应的level
bool t = s == "1"; //匹配Level
flag = flag || t;
if(flag) //遇到匹配的退出
break;
}
this.enabled = flag;
}
//测试了一下, 这个就是我的思路。 Test.P1就是一个设置授权等级的地方;
请填写推广理由:
分享
只看
楼主