asp.net – 如何删除日历的最后一周
我不确定为什么其他人之前没有问过这个问题.但是你注意到asp:Calendar最后会显示额外的一周吗? 例如,如果VisibleMonth设置为2010-03-01,FirstDayOfWeek设置为Sunday: > 2月28日至3月6日 我想知道为什么微软显示完全在四月份的最后一行.我试图在网上搜索一个房产,但它似乎并不存在. 我能想到的唯一解决方案是覆盖Pre_Render并检查所有个别日期,如果它们仍在VisibleDate的一周内.但当然这是一个极端的检查,因为控件的每次渲染都显示出来. 这是我的工作. protected void Calendar1_DayRender(object sender,DayRenderEventArgs e) { int dayOfWeek = Convert.ToInt16(e.Day.Date.DayOfWeek); int compensate = dayOfWeek - Convert.ToInt16(DayOfWeek.Sunday); DateTime WeekStart = e.Day.Date.AddDays(-1 * compensate); DateTime WeekEnd = WeekStart.AddDays(6); // If the start and end of the week does not have relevance to the current month if (WeekStart.Month != Calendar1.VisibleDate.Month && WeekEnd .Month != Calendar1.VisibleDate.Month) { e.Cell.Text = ""; e.Cell.Height = 0; e.Cell.Visible = false; } } 解决方法非常好.与大多数浏览器一起使用,但是对于Chrome 11.0.696.71和Safari for Windows(在Mac上没有测试过)很难看在某些月份,日历控件会在月初显示额外的一周. (当月的第一天是一周的第一天.) 设置e.cell.Visible = false时,它不会渲染元素.所以在chrome中你得到一行< tr>< / tr> . Chrome将其渲染为空白行.而且由于我认为没有办法通过日历控件设置TR元素的高度/样式,你最终会看到一个难看的日历,它缺少它在某些月份的第一行. 设置Visible = false时,将高度设置为0也不起作用.如果您没有设置Visible = false并且只是将height设置为0,则它仍然无法在chrome中正确呈现.所以解决方法是将高度设置为1 这是我修改过的解决方案. onrowrender protected void Calendar1_DayRender(object sender,DayRenderEventArgs e){ hideExtraWeek(sender,e,(DayOfWeek)Calendar1.FirstDayOfWeek); } 功能 protected void hideExtraWeek(object sender,DayRenderEventArgs e,DayOfWeek dw){ if (dw == (DayOfWeek)7) dw = (DayOfWeek)0; // FirstDayOfweek returns 7 when set to default,But it's zero based so valid values are 0 to 6 Boolean blnBrowserDoesntSupportsEmptyRow= Request.Browser.Browser=="Chrome" || Request.Browser.Browser=="Safari"; int dayOfWeek = Convert.ToInt16(e.Day.Date.DayOfWeek); int compensate = dayOfWeek - Convert.ToInt16(dw); DateTime WeekStart = e.Day.Date.AddDays(-1 * compensate); DateTime WeekEnd = WeekStart.AddDays(6); // If the start and end of the week does not have relevance to the current month if (WeekStart.Month==WeekEnd.Month && e.Day.IsOtherMonth){ e.Cell.Text = ""; e.Cell.Height = 1; // fix for chrome. Visible=false leaves a blank row even when there are no <td>s in the <tr> e.Cell.Visible = blnBrowserDoesntSupportsEmptyRow; } } (编辑:鄂州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net html控件的File控件实现多文件上传实例分享
- .net – ReportViewer 2010无法评估表达式
- ASP.Net 分页控件源码
- .net – IIS 6.0和ASPX中的404自定义错误不起作用
- .net – ELMAH对企业库异常处理块
- asp.net-mvc – 是否有一个ASP MVC与JSTL标签等效?
- asp.net-mvc-2 – ASP.NET MVC2 ModelMetadataProviders:重
- asp.net-mvc – 如何将复选框绑定到视图模型的List属性?
- 为什么asp.net将页面包装在一个表单中?
- asp.net – 为什么HttpContext.Current.User.Identity.Name
- asp.net-web-api – 从ASP.NET Web API ASP.NET
- 什么是链接服务器的ASP.NET连接字符串格式?
- asp.net-core – 在Visual Studio CTP2中的ASP.V
- asp.net – 我应该在Web应用程序中嵌入CSS / Jav
- Plone和Asp.Net集成
- asp.net-core – 使用IdentityServer4生成访问令
- ASP.NET MVC API 接口验证的示例代码
- ASP.NET标签控件 – 不编码HTML
- asp.net-mvc – 更改ASP.NET MVC筛选器中的视图
- asp.net – 使用JavaScript重新排列的ListBox元素