我的infopath需要根据当前用户的角色来控制用户的操作,具体就是如果用户有保存权限,Save按钮处于Enable状态,否则将Save按钮设置为disable状态。
InfoPath的按钮都有conditional formating功能,我们可以根据conditional formating的结果来控制按钮的状态或字体颜色等显示属性。conditional formating提供了简单的计算,如myfield1的值是否等于1;或当前用户的role是否等于某一个角色。
如果这些简单的计算不能满足你的需要,还有一种xdExtension的计算方式,是可以调用你自己的代码。
1 首先需要在你的代码中定义一个计算函数,我这里的函数是取一个field的bool值并返回
public bool SaveEnable()
{
string enable = thisXDocument.DOM.selectSingleNode("/my:myFields/my:SaveEnable").text;
if (enable.ToUpper() == "TRUE")
{
return true;
}
else
{
return false;
}
}
2 定义按钮的conditional formating,
在按钮上右键菜单选择
button properties -> Display -> Conditional Formatting... -> Add,
在对话框中设置条件,左侧下拉选择The expression, 然后输入:
xdExtension:SaveEnable() != string(true())
选中Disable this control,然后确定。