首先感谢三生石上为我们封装了这么好的控件,感谢你的无私奉献。我对你的景仰如滔滔江水,连绵不绝,又犹如黄河泛滥,一发不可收拾……{: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>
|