asp.net - 在 ajax 工具包日历扩展器中仅显示月份和年份

标签 asp.net vb.net calendarextender

请帮忙.. 如何修改ajax日历扩展器中的日历扩展器显示以仅显示月份和年份,我的意思是日历 View 而不是文本框文本格式,所以我只选择特定年份的月份名称。

最佳答案

所示的 OnClientShown 函数需要做的不仅仅是切换模式。这是我得到的解决方案,它只显示月份,您可以选择月份,并且文本框中仅显示月份和年份。

第 1 步

<asp:CalendarExtender ID="calendar1" ClientIDMode="Static" runat="server"
                      TargetControlID="txtDate" Format="yyyy-MM" 
                      DefaultView="Months" OnClientShown="onCalendarShown"
                      OnClientHidden="onCalendarHidden" PopupButtonID="imgStart" />

请注意:ClientIDMode = 静态,DefaultView = 月份以及附加的 OnClientShownOnClientHidden 事件。

您还可以将 Format="yyyy-MM"更改为您想要的任何格式,并在其中包含月份和年份。

第 2 步

创建这些 Javascript 函数。如果您没有加载 JQuery,请将 $find 更改为 document.getElementById

<script type="text/javascript">

    function onCalendarHidden() {
        var cal = $find("calendar1");

        if (cal._monthsBody) {
            for (var i = 0; i < cal._monthsBody.rows.length; i++) {
                var row = cal._monthsBody.rows[i];
                for (var j = 0; j < row.cells.length; j++) {
                    Sys.UI.DomEvent.removeHandler(row.cells[j].firstChild, "click", call);
                }
            }
        }
    }

    function onCalendarShown() {

        var cal = $find("calendar1");

        cal._switchMode("months", true);

        if (cal._monthsBody) {
            for (var i = 0; i < cal._monthsBody.rows.length; i++) {
                var row = cal._monthsBody.rows[i];
                for (var j = 0; j < row.cells.length; j++) {
                    Sys.UI.DomEvent.addHandler(row.cells[j].firstChild, "click", call);
                }
            }
        }
    }

    function call(eventElement) {
        var target = eventElement.target;
        switch (target.mode) {
            case "month":
                var cal = $find("calendar1");
                cal._visibleDate = target.date;
                cal.set_selectedDate(target.date);
                //cal._switchMonth(target.date);
                cal._blur.post(true);
                cal.raiseDateSelectionChanged();
                break;
        }
    }
</script>

代码修改自:http://danajaatcse.wordpress.com/2010/06/14/modifying-a-ajax-calender-control-to-operate-with-only-years/

关于asp.net - 在 ajax 工具包日历扩展器中仅显示月份和年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16682173/

相关文章:

vb.net - 为什么我的在线文本文件在 VB.NET 中下载为空白?

asp.net - 将 ASP.NET 文本框控件 .text 内容转换为日期/时间格式

c# - 使用 EF 的数据库优先中的连接字符串无法正常工作

c# - 在asp.net c# 中禁用RequiredFieldValidator

c# - 将Vb.Net Linq转换为C#但出现明显错误

asp.net - ajaxtoolkit :CalendarExtender working on one asp. 网络网页,但不在同一站点的其他网页上

localization - 如何在 ajaxToolkit :CalendarExtender? 中本地化 Today 文本

javascript - HeaderTemplate 中的 CheckBox 验证 ItemTemplate CheckBox

c# - 来自 ASP.NET 的数据包数据嗅探

vb.net - 该字段太小,无法接受您尝试添加的数据量。有人从 ADO.NET 收到此错误吗?