如何做一个万年历!

liuxibei1987 2009-12-16 04:21:12
公元 2009 年 12 月 农历己丑年 [ 牛年 ]
一 二 三 四 五 六 日
1 2 3 4 5 6

7 8 9 10 11 12 13
有大事
14 15 16 17 18 19 20
解决问题
21 22 23 24 25 26 27

28 29 30 31
要求可以上下翻页(月、年),可以编辑某一天想干什么事,编辑好后,就显示在那一天,或者显示一些图片



...全文
995 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnliming 2009-12-16
  • 打赏
  • 举报
回复
还没有js的好
liuxibei1987 2009-12-16
  • 打赏
  • 举报
回复
用VS自带的日历控件做,感觉不太熟悉,不过方便点。
我最终还是用输出html,拼出来的,感觉主要的难点
在于把每个月的日期按星期来排版。呵呵,谢谢楼上给
出方案的两个高手。
结贴
lsd123 2009-12-16
  • 打赏
  • 举报
回复
.
liuxibei1987 2009-12-16
  • 打赏
  • 举报
回复
谢谢楼上两个大哥,我好好研究下两种做法
Aslangg 2009-12-16
  • 打赏
  • 举报
回复
Aslangg 2009-12-16
  • 打赏
  • 举报
回复
界面很难看 不要见笑哦
这是一个根据不同用户呈现不同的日程安排的日历

就是在自带日历的事件里处理
  protected void cldLunarCalendar_DayRender(object sender, DayRenderEventArgs e)
{
UserInfo user = (UserInfo)Session["CurrentUser"];

//自定义显示内容
CalendarDay calDay = ((DayRenderEventArgs)e).Day;
//获取表示呈现在控件中的单元格
TableCell tc = ((DayRenderEventArgs)e).Cell;
//农历转换对象
//CNDate dt = new CNDate(calDay.Date);
LunarDate dt = new LunarDate(calDay.Date);
if (calDay.IsOtherMonth)
{
tc.Controls.Clear();
}
else
{
try
{
HyperLink aHyperLink = new HyperLink();
aHyperLink.ImageUrl = "~/images/add_Schedule.gif";
aHyperLink.ToolTip = "新增个人日程";
aHyperLink.NavigateUrl = "SaveMySchedule.aspx?userid=0&scheduleId=0&today=" + calDay.Date.ToShortDateString();
tc.Controls.Add(new LiteralControl(" " + " " + " "));
tc.Controls.Add(aHyperLink);
tc.Controls.Add(new LiteralControl("<br>" +dt.GetLunarHolDay()));

IList<int> scheduleList = ScheduleManager.GetScheduleIdList(user.UserId, calDay.Date.ToShortDateString());
foreach (int scheduleId in scheduleList)
{
if (scheduleId != 0)
{
Schedule schedule = ScheduleManager.GetScheduleByScheduleId(scheduleId);
HtmlAnchor ha = new HtmlAnchor();
ha.HRef = "SaveMySchedule.aspx?scheduleId=" + schedule.ScheduleId.ToString() + "&userid=0&today=" + "";
ha.InnerText = "◎" + schedule.BeginTime.Hour.ToString() + ":" + schedule.BeginTime.Minute.ToString() + " " + schedule.Title.Substring(0, 3) + "...";
tc.Controls.Add(new LiteralControl(" " + " " + " "));
tc.Controls.Add(new LiteralControl("<br>"));
tc.Controls.Add(ha);
tc.Controls.Add(new LiteralControl("<br>"));
}
}
}
catch (Exception exc)
{
Response.Write(exc.ToString());
}
e.Cell.Attributes["onmouseover"] = "javascript:this.style.backgroundColor='#fff7ce';cursor='hand';";
e.Cell.Attributes["onmouseout"] = "javascript:this.style.backgroundColor='#ffffff';";
}
}
编程有钱人了 2009-12-16
  • 打赏
  • 举报
回复

protected void Page_Load(object sender, EventArgs e)
{
createCalendar(2008,12);//输入参数进行测试
}
private void createCalendar(int year,int month)
{
int days = DateTime.DaysInMonth(year,month);//得到当月的天数
DateTime dt = new DateTime(year,month, 1);
int weeke =Convert.ToInt32(dt.DayOfWeek.ToString("d"));//得到当月的第一天是星期几
string[,] cal=new string[7,6];//创建一个二维数组来存放日期
for (int day= 1; day<= days;day++ )
{
int x = (day + weeke - 1) % 7;//根据星期的规律循环x轴坐标
int y = (day + weeke - 1) / 7;//根据(月/星期)循环Y轴坐标
for (int j = 0; j < 6;j++ )
{
for (int i = 0; i < 7;i++ )
{
cal[x, y] = day.ToString();//开始赋值
}
}
}
//输出
System.Text.StringBuilder st = new System.Text.StringBuilder();
st.Append("<table cellpadding=\"0\" cellspacing=\"0\" border=\"1\">");
st.Append("<thead><th> 星期天</th><th>星期一</th><th>星期二</th><th> 星期三</th><th>星期四</th><th>星期五</th><th> 星期六</th></thead>");
for(int i=0;i<6;i++)
{
st.Append("<tr>");
for(int j=0;j<7;j++)
{
st.Append("<td>"+cal[j,i]+"</td>");
}
st.Append("</tr>");
}
st.Append("</table>");
Response.Write(st);
Response.End();
}


表格部分你可以自己修饰
llsen 2009-12-16
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20090615/14/3b35c679-f283-452b-ac36-d2ade5f2d669.html

这个帖子里面我曾经问过,做一个月历,然后每个单元格里面填充一些内容,
希望能对你有些帮助

我最后实现,是在后台输出html,拼table,输出来的
liuxibei1987 2009-12-16
  • 打赏
  • 举报
回复
其实准备点定位就是一个带备忘录功能的日历
liuxibei1987 2009-12-16
  • 打赏
  • 举报
回复
web的,12楼的,能说下你的做法吗
Aslangg 2009-12-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 liuxibei1987 的回复:]
截图大家看看,用自带的日历控件能做吗,那个样式太难看了啊

[/Quote]
就是用自带的日历控件做,样式自己设置
龟仙 2009-12-16
  • 打赏
  • 举报
回复
WEB 还是 FORM 啊?

网上很多的。 我做过一个跟你的要求差不多,,修改些样式 换成自己的。
数据绑定的 需要加点东西。只要不手懒 很容易的。。
yanm7788 2009-12-16
  • 打赏
  • 举报
回复
建一个UpdatePanel,加入控件和相关事件就可以了
liuxibei1987 2009-12-16
  • 打赏
  • 举报
回复
这个节日要是动态的,不是死的。 要从数据读取。
比如加一个下个月某一天教育展,然后就显示,教育展取消了,就不显示
hhc123 2009-12-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 qqcrazyboy 的回复:]
我们做过!不过是用Java,用C#要做出你要的这种界面的话!有难度!
[/Quote]
开什么玩笑啊,至少手动敲的代码不会比你多
米か臹 2009-12-16
  • 打赏
  • 举报
回复
自己画,用datagridview可以实现的
智鹿软件 2009-12-16
  • 打赏
  • 举报
回复
我们做过!不过是用Java,用C#要做出你要的这种界面的话!有难度!
liuxibei1987 2009-12-16
  • 打赏
  • 举报
回复

这下能看见了吗
liuxibei1987 2009-12-16
  • 打赏
  • 举报
回复

截图大家看看,用自带的日历控件能做吗,那个样式太难看了啊
qlzf11140820 2009-12-16
  • 打赏
  • 举报
回复
加载更多回复(3)

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧