随笔-12  评论-161  文章-0  trackbacks-7

接上篇“基于Silverlight的精简框架之解析”,最近研究了ExtJs,发现其虽然外观很酷,但是开发难度比较大,大量JS不易维护,于是乎想起基于EasySL框架,实现ExtJs的部分功能。比较起来SL的UI和异步机制很容易实现,特别是SL类似于winform的控件开发方式,给开发丰富的RIA提供强大的支持。

一、此次主要是展示一个后台管理UI:

1. 登陆、列表、分页、添加、修改、删除,使用了双向绑定机制,界面元素和实体进行绑定,自动对界面进行取值赋值;

2. 其异步数据交互应用了此框架(EasySL)的简洁请求方式,只需传方法名和参数名到有同样方法签名的业务层,至于数据层暂时用的是假数据,推荐用db4o、linq to sql或SubSonic。

二、本次升级主要加入了一些常用的实用控件:

1. ImageButton: 你只需赋值normal、hover、click、enable四张图片即可
2. VisualPager: 原理和传统分页控件差不多,实现了比较久,主要是翻页的效果
3. Alert: 使用Window.Alert(string msg)
4. Confirm: 使用Window.Confirm(string msg, OnConfirm onConfirm)
5. Loading: 使用Window.ShowLoading(string msg)和Window.HideLoading()
6. DialogPanel: 使用Window.ShowOpPanel(string title, UserControl panel, OnSubmit onSubmit)
7. DragHelper: 提供拖拽支持

 三、一些实现方法还不是很好,后面将完善代码,欢迎大家加入到SL的开发行列一起讨论
 1. 预览地址:http://hz88a8.hz88a.wxdlpt.com/EasySL.htm

 2. 且源代码:http://files.cnblogs.com/guozili/EasySL.zip
 
 四、附:应用截图

1.用户登陆
EasySl (1).jpg

2.验证用户(loading control)
EasySl (2).jpg

3.加载第一页数据
EasySl (3).jpg

4.产品列表(visual pager control)
EasySl (4).jpg

5.确认删除(confirm control)
EasySl (5).jpg

6.添加产品(dialog panel control)
EasySl (6).jpg

7.升级产品(two-way bind)
EasySl (7).jpg

8.警告(Alert control)
EasySl (8).jpg

posted on 2008-11-23 19:01 guozili@163.com 阅读(3713) 评论(46)  编辑 收藏 网摘

评论:
#1楼 2008-11-21 09:37 | kkun      
真不错!~
  回复  引用  查看    
#2楼 2008-11-21 09:39 | sukit[未注册用户]
很漂亮,SilverLight学习中……
  回复  引用    
#3楼 2008-11-21 09:43 | 菌哥      
good!
学习

  回复  引用  查看    
#4楼 2008-11-21 09:49 | baggiojing      
用了不少新控件,不错,转载了!thanks
  回复  引用  查看    
#5楼 2008-11-21 09:50 | 非主流程序员      
这个局部刷新原理和AJAX一样么?
  回复  引用  查看    
#6楼 2008-11-21 09:52 | winzheng      
就顶,Good
  回复  引用  查看    
#7楼 2008-11-21 10:11 | caitou      
漂亮~~
  回复  引用  查看    
#8楼 2008-11-21 10:16 | JerryChou      
very good!
  回复  引用  查看    
#9楼 2008-11-21 10:30 | 木野狐(Neil Chen)      
really cool..
研究一下.

  回复  引用  查看    
#10楼 2008-11-21 10:31 | little L      
你那些控件是怎么弄回来的?
有组件包吗??麻烦告诉我好吗

  回复  引用  查看    
#11楼 2008-11-21 10:34 | 傻样精英      
很帅啊,
能不能给我个邮件跟你学习学习

  回复  引用  查看    
#12楼 2008-11-21 10:36 | 木野狐(Neil Chen)      
有一个小建议:
DataGrid 里行的选择要点击两下,有一个属性是可以改变 checkbox 点击模式的,如果点一下就更好了。

  回复  引用  查看    
#13楼[楼主] 2008-11-21 10:37 | guozili      
@little L
里面Binaries\Microsoft.Windows.Controls.dll和Microsoft.Windows.Controls.DataVisualization.dll是微软发布的第一批SL控件库,有用的主要是menu,autocomplete和大量的图表。
其他的一些控件是我做的一些SL项目中提取出来的。

  回复  引用  查看    
#14楼[楼主] 2008-11-21 10:41 | guozili      
@木野狐(Neil Chen)
谢谢提醒,我认为更好的操作方式应该是:用Ctrl键选中多行,然后按Delete键,google上已经有对datagrid操作的完整文章

  回复  引用  查看    
#15楼 2008-11-21 10:56 | net1234      
很不错,下载看看谢谢分享
  回复  引用  查看    
#16楼 2008-11-21 11:03 | 飞少      

  回复  引用  查看    
#17楼 2008-11-21 11:07 | StillWartersRunDeep      
顶一下
  回复  引用  查看    
#18楼 2008-11-21 11:07 | AlexChen      
很不错,以前看ExtJs的时候就很累,因为对JS掌握的还不是很好
不过,SL对于版本升级的问题很痛苦,昨天版本号2.0.31***的与原来使用2.0.30***版本的两个应用程序都不能运行.

  回复  引用  查看    
#19楼 2008-11-21 11:24 | Ariex[未注册用户]
滚动页码后,当前页失去那个焦点方框
  回复  引用    
#20楼[楼主] 2008-11-21 12:02 | guozili      
@AlexChen
此次2.0正式版会持续直到明年3,4份SL 3.0发布,毕竟升级改动也不是很大,主要是Bug较多,不过做RIA已经足够了

  回复  引用  查看    
#21楼 2008-11-21 12:29 | KevinXue[未注册用户]
我下载项目文件,执行后出现字体显示不正常的情况,请问怎么解决啊?谢谢
  回复  引用    
#22楼 2008-11-21 14:05 | 我佩服银光[未注册用户]
Perfect!





-------------------------------------
WPF Silverlight 技术QQ超级群10458228

成员来自五湖四海 各行各业

高手云集 热心人多 气氛活跃

(目前 370人/500人)
(还有近500MB的共享资源)

欢迎 WPF Silverlight 技术的爱好者加入,共同进步。

  回复  引用    
#23楼 2008-11-21 15:12 | win[未注册用户]
兄弟我终于找到学SL的动力了..
做得还真的不错..
我喜欢....

  回复  引用    
#24楼[楼主] 2008-11-21 16:23 | guozili      
@win
不只是RIA的应用,其实做动画也很爽的
给你看一个CCTV的应用:
http://www.jiaozhidao.com/cctv" target="_new">http://www.jiaozhidao.com/cctv 你需要推拽中间的环,进去后需要鼠标单击切换场景

  回复  引用  查看    
#25楼 2008-11-21 16:48 | Anders Cui      
Cool!
  回复  引用  查看    
#26楼 2008-11-21 17:08 | flankerfc      
很不错~~刚好才看了看ExtJs, Javascript那个痛苦啊....
  回复  引用  查看    
#27楼 2008-11-23 20:26 | aspnetx      
不错不错
之前也看过extjs,效果不错不过写javascript确实很头疼.

  回复  引用  查看    
#28楼 2008-11-23 22:06 | 要有好的心情      
太强了,对于UI的话,能用这个替换掉ExtJS吗?
  回复  引用  查看    
#29楼 2008-11-24 10:13 | 代震军      
好东西,支持一下:)
  回复  引用  查看    
#30楼 2008-11-24 11:11 | wuliangbo      
@guozili
您好 楼主 有几个项目为何打不开

  回复  引用  查看    
#31楼[楼主] 2008-11-24 11:28 | guozili@163.com      
@wuliangbo
你必须装Silverlight_Tools for VS2008 SP1才能打开Silverlight的项目

  回复  引用  查看    
#32楼 2008-11-26 22:26 | 木野狐(Neil Chen)      
楼主,有个 bug 啊。
HttpHelper 需要改写一下。在 post 时对 value 要进行 HttpUtility.UrlEncode() 处理。否则,Json.NET 序列化时间后产生的字符串里含有的 + 号到服务器端会丢掉,造成反序列化失败的 bug.

  回复  引用  查看    
#33楼 2008-12-10 17:10 | hurner[未注册用户]
很长就看到这篇文章了,很有用,谢谢了。
今天又找到这个文章来,就想问一下楼主的http://www.jiaozhidao.com/EasySL/这个网站是租的服务器还是虚拟空间啊
我这一段时间在网上狂找支持siverlight 2.0的虚拟空间,有一些ASP3.5的,却只支持siverlight1.1。如果楼主网站用的也是虚拟空间的,请好心告知一个提供商网址了,万分感激!
发邮件告知也行,谢谢:)

  回复  引用    
#34楼 2008-12-29 11:04 | SL Fans[未注册用户]
学习。

我怎么不能下载阿?

  回复  引用    
#35楼 2008-12-29 11:15 | SL Fans[未注册用户]
急急急。。。。
麻烦楼主给发发一份代码,我下不了了。 :(.


谢谢谢谢。。。。

  回复  引用    
#36楼 2008-12-29 11:32 | SL Fans[未注册用户]
很想知道你那个status bar 是怎么做的,就是 loading... verifying...,SL是不支持Gif文件的,不知道你是怎么做到的。

还是那个东西是不会动的?

  回复  引用    
#37楼 2009-01-06 16:00 | lonelywind[未注册用户]
代码下载不了啊
  回复  引用    
#38楼 2009-02-04 10:43 | cobrayang[未注册用户]
由于Popup控件与ItemsControl派生控件(包括ComboBox、ListBox、更多的第三方控件Menu等 ) 不兼容(已经初步测试过),当在弹出对话框(Popup控件)中包含ItemsControl该类控件时,点击ItemsControl控件,导致浏览器崩溃.请教站长有什么好的解决方法,请不惜赐教.

  回复  引用    
#39楼 2009-02-04 15:25 | Minja      
标记
  回复  引用  查看    
#40楼 2009-02-04 23:19 | guozili[未注册用户]
@cobrayang
这个我倒没碰到过,你可以试试在popup completed时先comboxbox.focus(),然后.itemsource=......
也可也用一个层遮住底层然后出现或隐藏,所以在我们的项目里一般有个draghepler处理弹出层拖拽,pophepler负责创建弹出层或隐藏出现

  回复  引用    
#41楼 2009-02-05 20:23 | cobrayang[未注册用户]
--引用--------------------------------------------------
guozili: @cobrayang
这个我倒没碰到过,你可以试试在popup completed时先comboxbox.focus(),然后.itemsource=......
也可也用一个层遮住底层然后出现或隐藏,所以在我们的项目里一般有个draghepler处理弹出层拖拽,pophepler负责创建弹出层或隐藏出现
--------------------------------------------------------

这样啊,我试试,谢了先:)

  回复  引用    
#42楼 2009-02-13 21:40 | 青菜皮      
博主
请问easysl有新板本了吗?
我非常喜欢
thank

  回复  引用  查看    
#43楼 2009-05-08 17:10 | 要有好的心情      
首先感谢lz的好东西。

请教,ProductList 上点击某一页,或者下一页,等待的时间较长,是故意用了延迟吗?

执行Window.ShowLoading("Get Products of page " + this.pageIndex.ToString());后,发现要过2-3秒钟才执行GetProductListCallBack方法,我没看到哪里进行了延时处理。

  回复  引用  查看    
#44楼[楼主] 2009-05-08 17:59 | guozili@163.com      
是的,在\EasySL.Data\ServerDALMock.cs,为了模拟数据请求相应慢

--引用--------------------------------------------------
要有好的心情: 首先感谢lz的好东西。

请教,ProductList 上点击某一页,或者下一页,等待的时间较长,是故意用了延迟吗?

执行Window.ShowLoading("Get Products of page " + this.pageIndex.ToString());后,发现要过2-3秒钟才执行GetProductListCallBack方法,我没看到哪里进行了延时处理。
--------------------------------------------------------

  回复  引用  查看    
#45楼 2009-05-11 09:19 | 要有好的心情      
感谢你的回复。

在GetProductList方法中,我注释掉:Thread.Sleep(150 * rd.Next(0, 20));
依然有2-3秒钟延时,可能的原因是什么?

我承认我还没有认真看看项目中的代码逻辑,还只是看看看运行效果。

  回复  引用  查看    
#46楼[楼主] 2009-05-16 01:25 | guozili@163.com      
不好意思,在EasySL.Service\DataService.Method.cs
row 31 还有Thread.Sleep 以前做测试用的
你可以获取svn上的:http://www.codeplex.com/EasySL" target="_new">http://www.codeplex.com/EasySL 是比较完善的版本

--引用--------------------------------------------------
要有好的心情: 感谢你的回复。

在GetProductList方法中,我注释掉:Thread.Sleep(150 * rd.Next(0, 20));
依然有2-3秒钟延时,可能的原因是什么?

我承认我还没有认真看看项目中的代码逻辑,还只是看看看运行效果。
--------------------------------------------------------

  回复  引用  查看    
发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1338150




相关文章:

相关链接: