FineUI 官方论坛

标题: 授权的部分问题,及让无权限按钮灰掉 [打印本页]

作者: tukzer    时间: 2013-5-6 16:51
标题: 授权的部分问题,及让无权限按钮灰掉
本帖最后由 tukzer 于 2013-5-6 16:58 编辑

在使用APPBOX时发现,当按钮无权限时,直接将其Eanbled=False,但是此时按钮看上去的效果还是可以点击,实际上点击没有反应?请问是否有对应的CSS或者可以通过设置字体的方式,让你变灰或者变暗。
Button里面没有Color相关的树形,CSSSTYLE添加了貌似没用,有什么方案还是我的弄错了?
另外,我这边Grid的列在通过RowDataBound事件设置权限时,发现第一行有时候会可以点击,后续行不可点击,这是什么原因?




        protected void CheckPowerFailWithWindowField(FineUI.Grid grid, string columnId)
        {
            FineUI.WindowField btn = grid.FindColumn(columnId) as FineUI.WindowField;
            btn.Enabled = false;
            btn.ToolTip = CHECK_POWER_FAIL_ACTION_MESSAGE;
        }

为何这段代码必须放到RowDataBound而不是在数据绑定后直接使用呢,他找的对象看起来是一列,而非逐行啊?

请指教,谢谢!

[补充:不好意思,用Chrome浏览器时发现按钮是灰掉的,但是IE10貌似不能灰掉,具体继续研究下]




作者: sanshi    时间: 2013-5-6 17:30
“另外,我这边Grid的列在通过RowDataBound事件设置权限时,发现第一行有时候会可以点击,后续行不可点击,这是什么原因?”
=============
这是一个经典的错误用法,可以参考下:http://www.cnblogs.com/sanshi/archive/2012/10/19/2730381.html

RowDataBound 是行渲染后触发的,所以此时对列属性的改变不会影响最终行的渲染结果,这也是对第一行不起作用的原因。




“Eanbled=False,IE10无法灰掉”
=============
这个可能需要调整CSS吧,用FineUI v3.2.5.3 试下


作者: tukzer    时间: 2013-5-6 18:06
非常感谢如此快速的回复,自己重写了一个EF版的权限管理,发现Grid的几个事件确实没有掌握好!
IE下面不同版本的这个CSS处理确实效果迥异,后面摸索下!谢谢啦,
作者: luokaijin    时间: 2013-5-10 17:38
tukzer 你好,我在改写为EF时出现了一个问题无法解决,麻烦你帮看看嘛,具体已经在附件里了,先谢谢哈!
作者: tukzer    时间: 2013-5-13 16:56
luokaijin 发表于 2013-5-10 17:38
tukzer 你好,我在改写为EF时出现了一个问题无法解决,麻烦你帮看看嘛,具体已经在附件里了,先谢谢哈! ...

不好意思,没及时看到!
你现在确信是因为删除了几个权限声明引起的么?可以调试下ModuleHelper,
或者可以@下sanshi,因为我改写的时候把这一块的内容页改掉了,稍微有些不同。
作者: luokaijin    时间: 2013-5-15 15:06
本帖最后由 luokaijin 于 2013-5-15 15:12 编辑

tukzer 你好:
我在改写为EF的过程中,代码都是从sanshi给的AppBox复制过来的,其他页面都没问题,只是在“角色模块权限管理”role_module2.aspx页里出了问题。研究了几天也没有找到问题,郁闷!
数据库数据一模一样,public enum ModulePowerType一模一样,public enum ModuleType一模一样,只是修改了RoleModulePowerHelper类下面的GetRoleModuleDictionary(int roleId)方法(从数据库查找角色对应的全部模块权限)而已,其他的都没有动。怎么得到的结果就不一样呢。点击“全选复选框”-》“全部”得到的结果如下图,也不正确。
后台条数的时候看了,获取的数据都正确,可绑定到表格是就好像不正确了,是不是下代码有问题呀:
        protected void Grid2_RowDataBound(object sender, FineUI.GridRowEventArgs e)
        {
            AspNet.CheckBoxList ddlOthers = (AspNet.CheckBoxList)Grid2.Rows[e.RowIndex].FindControl("ddlOthers");
            RoleModulePower row = e.DataItem as RoleModulePower;
            string moduleName = row.ModuleName;
            List<string> otherPowerNames = ModulePowerTypeHelper.GetModuleOtherPowerTypeDic(moduleName);
            foreach (string powerName in otherPowerNames)
            {
                // powerName = "ChangePassword" moduleName = "CoreUser"
                AspNet.ListItem item = new AspNet.ListItem();
                item.Value = powerName;
                item.Text = ModulePowerTypeHelper.GetTitle(moduleName, powerName);
                item.Selected = row.OtherPowers[powerName].Value<bool>();
                ddlOthers.Items.Add(item);
            }
        }
但这代码也是从AppBox复杂过来的呀!!!
也问过sanshi老师了,可他忙吧,也没有帮我看看原代码?
你能帮我看看源代码吗?谢谢了  














作者: luokaijin    时间: 2013-5-16 17:07
用新建一“ASP.NET WEB空应用程序” .NET Framework 4,的方式来写sanshi提供的AppBox时,在“角色模块权限”页的表格绑定“其他权限”列显示不正确。今天通过改写sanshi提供的AppBox时,问题得以解决,改写方式为:
1、        打开sanshi提供的AppBox源代码。
2、        右击“AppBox”-》“属性”,“应用程序”-》“目标框架”由2.0改为4.0。
3、        修改Web.config。
4、        删除Subsonic,修改为EF数据库访问方式。
一切OK!

很纳闷,一样的代码,为什么改写就正确呢!!
作者: luokaijin    时间: 2013-5-17 09:30
问题终于解决了!
在Web.config下的<pages>里添加clientIDMode="AutoID"就OK 了!
作者: tukzer    时间: 2013-5-19 17:28
恭喜,话说当时不是提供了一个空的解决方案么!你这个问题能找到满不容易的,哈哈
作者: duke6372    时间: 2013-6-12 09:42
我之前也遇到過同樣的問題。還是web.config配置問題,總結了幾點iis7以上配置的注意事項。。壇子裏有帖子的。搜一下可以參考。




欢迎光临 FineUI 官方论坛 (https://fineui.com/bbs/) Powered by Discuz! X3.4