FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
楼主: 杜志彬
打印 上一主题 下一主题

提交BUG和建议若干

[复制链接]
跳转到指定楼层
楼主
发表于 2012-3-10 15:12:20 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
首先感谢三生石上为我们封装了这么好的控件,感谢你的无私奉献。我对你的景仰如滔滔江水,连绵不绝,又犹如黄河泛滥,一发不可收拾……{:soso_e113:}

我测试了大约有两周时间,做了N个测试页面,越来越喜欢ExtAspNet。因为喜欢,所以希望ExtAspNet能够越来越好。提出一些问题,为ExtAspNet尽一点微薄之力。

一、建议:PageManage的Theme全局统一。在切换主题时能自动保存到Cookie中,每个页面能够按照Cookie=>ageManager.Theme=>web.config配置的优先级自动应用。这样就不需要每个页面再去手工指定了。

二、建议:现在的Alert.Show不是模式提示窗,在弹出提示窗后,在点击确认按钮前,后面的脚本已经执行了。而alert是模式窗口,在确认前,后面的脚本是不执行的。
例如我原来在提示后将文本框设置焦点,正常执行:
alert('用户名或密码错误。');
txtUserName.focus();
换成ExtAspNet按正常逻辑尝试以下代码,按说脚本应该串联执行,但不成功:
Alert.Show("用户名或密码错误。");
txtUserName.Focus();
在弹出提示框后,焦点就已经设置了,点确认或敲回车后,焦点消失。
现在使用的变通方式:
ExtAspNet.Alert.Show("用户名或密码错误。", "提示", string.Format("X('{0}').focus(true, 100);", txtUserName.ClientID));

三、建议:模板绑定时支持Eval,而现在只能用DataBinder.Eval(Container.DataItem, "IsDisabled") 这种形式。
<ext:TemplateField SortField="IsDisabled" HeaderText="作废" Width="50px">
<ItemTemplate>
<%# (bool)DataBinder.Eval(Container.DataItem, "IsDisabled") ? "作废" : "" %>
</ItemTemplate>
</ext:TemplateField>

四、建议:Grid等组件在设计视图中显示Toolbar。在HTML视图中添加修改控件属性可以接受,但添加事件就比较麻烦了,而Toolbar中的控件往往需要添加事件。

五、建议:为Window组件添加Show、ShowModal、Hide方法,可以在后台代码中调用直接显示或隐藏Window。

六、建议:为Grid组件添加SortColumn属性。由于Grid可能经常进行设计变动, 前后顺序一变动ColumnIndex就需要调整,而按字段是比较稳定的,另外   ColumnIndex 和 SortDirection  在设计属性中没有出现。下面是我现在的变通实现:
// TODO:默认的排序列和排序方向
grid.SortColumnIndex = grid.Columns.SingleOrDefault(a => a.SortField == "OperatorDate").ColumnIndex;
grid.SortDirection = "DESC";

七:BUG:如果Grid.DataKeyNames="Id"为GUID类型,则绑定时不显示。
脚本报错:
A JSONArray must start with '['

这个是个BUG,Grid的DataKeys如果是GUID类型的字段,就会抛出这个异常。我的解决办法是把ExtAspNet源代码中GridRow.cs的第241行由:
DataKeys[j] = GetPropertyValue(keyNames[j]);
改为:
DataKeys[j] = GetPropertyValue(keyNames[j]).ToString();
重新编译后重新引用就可以了。

八、BUG:Grid的排序标记在翻页或绑定后消失。
http://bbs.extasp.net/forum.php?mod=viewthread&tid=108&extra=page%3D1
我在PageLoad事件中指定了Grid的排序字段列和排序方向,并对数据进行了绑定。Grid的排序列是显示排序标志的(上、下小箭头),点击列标题也是显示排序标志的,但在对Grid重新进行绑定之后,排序标志就不见了。
我试过只要改变SortColumnIndex、SortDirection的值,就会出现排序标志。这也是为什么第一次绑定或者手工点击列标题进行排序时是正常的。

九、BUG:在显示确认修改提示后,如果我点“取消”或“x”号,则每次点击新增显示Window并关闭时都显示确认修改提示。
主页面:wdwSave.OnClientCloseButtonClick = wdwSave.GetConfirmHidePostBackReference();

在编辑页面:btnClose.OnClientClick = ExtAspNet.ActiveWindow.GetConfirmHidePostBackReference();

我想通过这样来确保不论是点击关闭按钮还是点击Window右上角关闭按钮的关闭,都能够检查是否已修改了编辑窗体。现在点关闭按钮btnClose是正常的,而点击Window右上角关闭按钮时,Window直接关闭而没有提示已被修改。在点击“新增”显示Window时,显示了确认修改提示。如果我点“取消”或“x”号,则每次点击新增显示Window并关闭时都显示确认修改提示。

十、BUG:Button的Menu.Hidden不起作用。如下面的使用帮助、关于菜单能正常显示。
<ext:Button ID="btnHelp" EnablePostBack="false" Icon="Help" Text="帮助" runat="server">
        <Menu runat="server" Hidden="true">
                <ext:MenuHyperLink ID="lnkHelp" runat="server" Text="使用帮助" Target="_blank" />
                <ext:MenuButton ID="btnAbout" runat="server" Text="关于" />
        </Menu>
</ext:Button>


沙发
 楼主| 发表于 2012-9-19 03:00:05 | 显示全部楼层
谢谢。测试了一下第六条,修正之后如果只指定SortColumn,不指定SortColumnIndex的话,在绑定时会抛出异常:
[NullReferenceException: 未将对象引用设置到对象的实例。]
   ExtAspNet.Grid.get_SortColumnIndex() +135

在断点跟踪时,SortColumnIndex为null。

重现代码:
            // 默认的排序列和排序方向
            grid.SortColumn = "OperatorDate";
            //grid.SortColumnIndex = 3;
            grid.SortDirection = "DESC";            。。。省略部分
            grid.DataSource = list.AsQueryable().SortBy(grid.SortColumn + " " + grid.SortDirection).Skip(grid.PageSize * grid.PageIndex).Take(grid.PageSize);
            grid.DataBind();

我的理解:SortColumn和SortColumnIndex应该是联动的,指定其中任一属性均可。例如我指定SortColumn = "OperatorDate", 获取SortColumnIndex时应为3,反之亦可。

结论:需求未完整实现。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-5-15 13:59 , Processed in 0.043967 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表