用Asp.net Ajax和Telerik快速打造属于自己的FastDial
FastDial 是FireFox下一个常用的插件,它主要可以图片的形式显示几个不同的主页,同时你可以刷新这些图片。我一直很喜欢这个插件,可是当我没有带自己的电脑或者没有装FireFox的时候,就没那么方便了。在有一次接触了Telerik控件之后,感觉他很适合用来实现这个效果。所以,我就打算用Asp.net Ajax和Telerik打造属于自己的FastDial(FastDial.org)。做之前,我找过相关的网站,可没有找到合适的。也不知道有没有一些成熟的案例,只好硬着头皮自己做了。
下图是FireFox下FastDial的效果图。
它的主要功能:
1. 可以增加,删除,修改一个块。
2. 区块之间可以拖拽。
3. 可以将网页保存成缩略图。
4. 区块间可自动排列。
5. 可以自己设定区块个数,链接打开方式,背景颜色等。
缺点:
1. c/s程序,分布式应用困难。
2. 不支持多用户。
3. 只能在FireFox下使用。
上面暂且当做一个简单的需求分析吧,下面我将演示怎样用Asp.net Ajax和Telerik快速打造属于自己的FastDial。 因为只是个简单的尝试,所以并不打算实现FastDial的所有功能。
1. 首先创建9个 RadDockZone。
for (int k = 1; k < 4; k++)
{
for (int i = 1; i < 4; i++)
{
RadDockZone zone = new RadDockZone();
zone.ID = "RadDockZone" + j.ToString();
}
this.TableContainer.Rows.Add(row);
}
2. 在每个RadDockZone里面添加属于自己的RadDock。
List<Dock> lis = new DockMgr().GetByUserID(userID);
foreach (Dock li in lis)
{
CreateDock(li);
}
private RadDock CreateDock(Dock d)
{
RadDock dock = new RadDock();
dock.ID = d.ID.ToString();
dock.Title = d.Title;
dock.DockMode = DockMode.Docked;
RadDockZone zone = (RadDockZone)RadDockLayout1.FindControl("RadDockZone"+d.DockZoneID);
zone.Controls.Add(dock);
return dock;
}
3.增加AddDock页面可以用来增加自己的RadDock。
public Dock AddADock(string index, string url, string title)
{
string userid = FastDialContext.CurrentUser.Memeber.Member_ID.ToString();
Dock d = new Dock();
Dock d2 = mgr.GetByUrlAndUserID(url2, userid);
if (d2 == null)
{
d.ID = Guid.NewGuid();
d.Url = url2;
d.Title =title;
d.ImgPath = ImageHelper.GetImgName(url2);
d.DockZoneID = byte.Parse(index);
d.UserID = userid;
d.Create_Time = DateTime.Now;
mgr.AddDock(d);
return d;
}
return d2;
}
3. 增加EditDock页面可以用来修改RadDock。
DockMgr mgr = new DockMgr();
string userid = FastDialContext.CurrentUser.Memeber.Member_ID.ToString();
string index = Request["index"].ToString();
string url = Server.HtmlEncode(TextBox_Url.Text);
string title = Server.HtmlEncode(TextBox_Title.Text);
Dock d = mgr.GetByIndexAndUserID(index, userid);
string oldurl = d.Url;
d.Url=url2;
d.ImgPath=ImageHelper.GetImgName(url2);
d.Title = title2;
mgr.UpDateDock(d);
4. 增加DeleteDock页面可以用来删除RadDock。
public bool DeleteIndex(string index)
{
string userid = FastDialContext.CurrentUser.Memeber.Member_ID.ToString();
return mgr.DeleteByIndexAndUserID(index, userid);
}
增删改查搞定了,基本效果如下:
因为是第一次做,还有很多bug,希望大家骂声不要太大。
存在的几个问题:
- 生成缩略图速度慢,有些时候生成缩略图会报错。
- 有些时候增加一个链接,图片不会刷新,要手动刷。
- 没钱买正式版telerik,有时候会出版权信息,刷几次就好了。
- 还有很多未知错误。