随心所欲

做个幸福的人
posts - 147, comments - 1402, trackbacks - 28, articles - 0
  博客园 :: 首页 :: 新随笔 ::  :: 订阅 订阅 :: 管理

这个控件看起来不错。
功能:
1:提供Calendar的ContextMenu,右键调出。回发处理方式多样。支持AJAX
2:视图多种:可以显示天任务,也可以显示多天的,比方说1周内的计划任务
3:提供js事件和回发的Command事件处理。
4:支持DataTable数据绑定,xml数据绑定等
5:动态编辑任务,鼠标多选,拖动。js实现。
6:提供客户化的接口甚多。比方说时间格式,字体之类的。

 
英文介绍地址:http://www.codeproject.com/useritems/daypilot2.asp
图片:




下载:
http://www.daypilot.org/try.html

介绍:
几个重要属性的介绍

ContextMenuID="DayPilotMenu1" //上下文菜单的ID
DataEndField="end" //日期结束的字段
DataStartField="start" //日期时间开始的字段
DataTextField="name"//要在界面上显示的字段
DataValueField="id"//要绑定的值的字段。和DropDownList相像
Days="7" //这个比较重要。是现实几天数据的。这里设置的就是显示一周的数据。
//事件处理的方式
EventClickHandling="Edit" 
EventEditHandling="CallBack"  
EventMoveHandling="CallBack" 
EventResizeHandling="CallBack" 
EventEditHandling=“CallBack”;
EventMoveHandling=“CallBack”;
EventResizeHandling="CallBack"
//事件处理
OnEventClick="DayPilotCalendar1_EventClick" 
OnEventEdit="DayPilotCalendar1_EventEdit" 
OnEventMenuClick="DayPilotCalendar1_EventMenuClick" 
OnEventMove="DayPilotCalendar1_EventMove"
OnEventResize="DayPilotCalendar1_EventResize" 
OnTimeRangeSelected="DayPilotCalendar1_TimeRangeSelected"
//其他
HeightSpec="BusinessHours"
Style="left: 54px; top: 45px" TimeRangeSelectedHandling="CallBack"

看看上下文菜单

 1   <daypilot:DayPilotMenu ID="DayPilotMenu1" runat="server">
 2        <daypilot:MenuItem Action="JavaScript" JavaScript="alert('Opening event (id {0})');"
 3            Text="Open" />
 4        <daypilot:MenuItem Action="JavaScript" JavaScript="alert('Sending event (id {0})');"
 5            Text="Send" />
 6        <daypilot:MenuItem Action="NavigateUrl" Text="-" />
 7        <daypilot:MenuItem Action="Callback" Command="Delete" Text="Delete (CallBack)" />
 8        <daypilot:MenuItem Action="PostBack" Command="Delete" Text="Delete (PostBack)" />
 9    </daypilot:DayPilotMenu>
10


这是数据绑定的代码,看起来很熟悉

 1        DayPilotCalendar1.StartDate = DayPilot.Utils.Week.FirstDayOfWeek(DateTime.Today);
 2
 3        if (!IsPostBack)
 4        {
 5            if (Session["AllFeatures"== null)
 6                Session["AllFeatures"= DataGenerator.GetData();//生成测试用的数据
 7
 8            DayPilotCalendar1.DataSource = Session["AllFeatures"];//就是设置DataTable做数据源了
 9            DataBind();
10        }

11
12


这一个是数据源的定义

 1public class DataGenerator
 2{
 3    public static DataTable GetData()
 4    {
 5        DataTable dt;
 6        dt = new DataTable();
 7        dt.Columns.Add("start"typeof(DateTime));
 8        dt.Columns.Add("end"typeof(DateTime));
 9        dt.Columns.Add("name"typeof(string));
10        dt.Columns.Add("id"typeof(string));
11        dt.Columns.Add("column"typeof(string));
12
13        DataRow dr;
14
15        dr = dt.NewRow();
16        dr["id"= 0;
17        dr["start"= Convert.ToDateTime("15:50");
18        dr["end"= Convert.ToDateTime("15:55");
19        dr["name"= "Event 1";
20        dr["column"= "A";
21        dt.Rows.Add(dr);
22
23        dr = dt.NewRow();
24        dr["id"= 1;
25        dr["start"= Convert.ToDateTime("16:00");
26        dr["end"= Convert.ToDateTime("17:00");
27        dr["name"= "Event 2";
28        dr["column"= "A";
29        dt.Rows.Add(dr);
30
31        dr = dt.NewRow();
32        dr["id"= 2;
33        dr["start"= Convert.ToDateTime("16:15").AddDays(1);
34        dr["end"= Convert.ToDateTime("18:45").AddDays(1);
35        dr["name"= "Event 3";
36        dr["column"= "A";
37        dt.Rows.Add(dr);
38
39        dr = dt.NewRow();
40        dr["id"= 3;
41        dr["start"= Convert.ToDateTime("16:30");
42        dr["end"= Convert.ToDateTime("17:30");
43        dr["name"= "Sales Dept. Meeting Once Again";
44        dr["column"= "B";
45        dt.Rows.Add(dr);
46
47        dr = dt.NewRow();
48        dr["id"= 4;
49        dr["start"= Convert.ToDateTime("8:00");
50        dr["end"= Convert.ToDateTime("9:00");
51        dr["name"= "Event 4";
52        dr["column"= "B";
53        dt.Rows.Add(dr);
54
55        dr = dt.NewRow();
56        dr["id"= 5;
57        dr["start"= Convert.ToDateTime("22:00");
58        dr["end"= Convert.ToDateTime("6:00").AddDays(1);
59        dr["name"= "Event 5";
60        dt.Rows.Add(dr);
61
62
63        dr = dt.NewRow();
64        dr["id"= 6;
65        dr["start"= Convert.ToDateTime("11:00");
66        dr["end"= Convert.ToDateTime("13:00");
67        dr["name"= "Event 6";
68        dt.Rows.Add(dr);
69
70        dt.PrimaryKey = new DataColumn[] { dt.Columns["id"] };
71
72        return dt;
73
74    }

75}

76
77


有demo可以下载的,具体代码里面都有。这里提供的代码也全部都是来自他提供的Demo

Feedback

#1楼    回复  引用  查看    

2007-05-10 10:48 by neuhawk      
早就用了~

#2楼 [楼主]   回复  引用  查看    

2007-05-10 10:52 by 随心所欲      
@neuhawk
一直类有类似的应用,有了才去查的。所以刚发现。

#3楼    回复  引用  查看    

2007-05-10 12:15 by 代码乱了      
不错的说

#4楼    回复  引用  查看    

2007-05-10 12:19 by Cure      
我们最近也在做类似的应用,不过找了很久,都没有找到类似的好的开源项目。
这个也是要掏钱的,有没有好的开源的啊。

#5楼    回复  引用  查看    

2007-05-10 12:32 by Cure      
呵呵,刚才又看了一遍,最新版不是开源的还好有2.2版本的source。多谢楼主

#6楼    回复  引用    

2007-05-10 12:41 by ukyoxh [未注册用户]
下载来看了一下,用Reflector打开,查看DayPilotCalendar类的Render方法
if ((Assembly.GetExecutingAssembly().GetName().Version.MinorRevision % 2) != 0)
{
output.AddAttribute("unselectable", "on");
output.AddStyleAttribute("-moz-user-select", "none");
output.AddStyleAttribute("z-index", "100");
output.AddStyleAttribute("position", "absolute");
if (this.ShowHeader)
{
output.AddStyleAttribute("top", (this.HeaderHeight + 2) + "px");
}
else
{
output.AddStyleAttribute("top", "1px");
}
output.AddStyleAttribute("left", "1px");
output.AddStyleAttribute("background-color", "Orange");
output.AddStyleAttribute("color", "#ffffff");
output.AddStyleAttribute("padding", "2px");
output.AddStyleAttribute("font-size", "10px");
output.AddStyleAttribute("font-family", this.EventFontFamily);
output.AddStyleAttribute("padding", "4px");
output.AddAttribute("href", "http://www.daypilot.org/buy.html");
output.RenderBeginTag("a");
output.Write("DEMO");
output.RenderEndTag();
}

应该可以破掉吧

#7楼 [楼主]   回复  引用  查看    

2007-05-10 12:43 by 随心所欲      
@Cure
v2.2确实是免费的,还有源代码。
功能上可能稍微差一点。
299刀,这样的功能,值。

#8楼 [楼主]   回复  引用  查看    

2007-05-10 12:44 by 随心所欲      
@ukyoxh
这样不好吧,都是靠手艺吃饭,支持同行也就是支持自己了。

#9楼    回复  引用    

2007-05-10 13:17 by ukyoxh [未注册用户]
@随心所欲
偶是穷人,只是给想自己试试的人建议下,如果自己用下下也要掏Money觉得就不值得了,单位要用又不一样,肯定建议买啦:)

#10楼 [楼主]   回复  引用  查看    

2007-05-10 13:22 by 随心所欲      
@ukyoxh
试用不要钱啊。只是发布的话得花钱。
还有就是v2.2开源。这个挺好。

#11楼    回复  引用    

2007-05-10 13:33 by qaz [未注册用户]
还是你厉害阿,用别人的控件都可给自己挣人气.

#12楼 [楼主]   回复  引用  查看    

2007-05-10 13:41 by 随心所欲      
@qaz
独乐乐,与人乐乐,孰乐?
俺用着爽,也给给大家介绍这个很有实用价值的控件,何乐而不为呢?
况且还给原作者做点小广告,算是免费试用的一点回报了。

#13楼    回复  引用  查看    

2007-05-10 14:03 by gguowang      
其实不在于是否原创,好东西介绍给更多人用本身就是一件值得快乐的事情哦

#14楼 [楼主]   回复  引用  查看    

2007-05-10 14:23 by 随心所欲      
@gguowang
是也。
我写过了这么多原创了,但是技术上东西,需要博采众长,需要不断借鉴。

#15楼    回复  引用  查看    

2007-05-10 15:42 by yangli      
这个不错,收藏了~

#16楼    回复  引用  查看    

2007-05-10 18:28 by Justin      
不错,收了,谢谢!

#17楼 [楼主]   回复  引用  查看    

2007-05-10 19:47 by 随心所欲      
有这么多人喜欢,嘿嘿,好!

#18楼    回复  引用  查看    

2007-05-12 11:56 by Phinecos(洞庭散人)      
不错,学习学习

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
Google站内搜索

China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》



相关文章:

相关链接:
 
Google