【问题标题】:Generate dynamic calendar controls生成动态日历控件
【发布时间】:2011-04-29 16:44:26
【问题描述】:

如何根据用户的选择生成动态控件?

我最近参加了一项实际测试,他们有以下提到的要求

  1. 他们有 2 个日历(asp.net 默认)。

  2. 他们有两个选项(单选按钮列表):一个是“重复打开”,另一个是“重复打开”

Repeat on 有 2 个下拉菜单:

1) Day Dropdown:它的值是:每隔一天,每隔一天,每隔一天

2) 持续时间下拉列表:它的值是:日、月、周、年

重复有2个下拉:

1) 周:值为第一周、第二周、第三周

2) 日期:周日、周一 .... 周六

现在,当我单击第一个日历的日期(例如 2010 年 8 月 10 日)和第二个日历的日期(例如 2011 年 1 月 26 日)时,我希望生成动态日历,以显示从 8 月到 1 月的日历(包括两者)

出于过滤目的,如果我选择第一个星期日(从重复打开选项),则应选择动态日历的第一个星期日。如果我每三天选择一次,那么应该选择每三天一次(在动态生成的日历中)

我所做的是:可以通过创建日历类的对象来生成动态日历.. 对吗?另外我在谷歌上搜索,他们表明 DayRender Event 可能是一个可能的解决方案,但这并没有帮助......

如何做到这一点?如何生成动态日历?

如果问题没有被理解,请告诉我。

把类似的代码传给我

谢谢!

【问题讨论】:

    标签: c# .net asp.net visual-studio calendar


    【解决方案1】:

    听起来您想要做的是设置属性Calendar.SelectedDateCalendar.VisibleDate

    我不确定您的确切目标是什么,因为我不知道用户将选择您的 1 月 1 日/6 月 1 日日期的控制类型,或者第三个星期日与此有什么关系。只有一个日历吗?如果以下信息对您没有帮助,请再解释一下。

    我将从我的一个应用程序中粘贴一些 VB 代码,希望对您有所帮助。

    Protected Sub calArrival_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles calArrival.SelectionChanged
        SetFormDepartureEntry()
    
        lblArrivalDate.Text = calArrival.SelectedDate.ToLongDateString
        calDeparture.SelectedDate = calArrival.SelectedDate
        calDeparture.VisibleDate = calArrival.SelectedDate
        dtSelectedArrival = "1/1/2000"
    
        'Determine if we need to see 2 months to view all possible departure dates.
        If (DatePart(DateInterval.Month, calDeparture.SelectedDate) <> _
            DatePart(DateInterval.Month, DateAdd(DateInterval.Day, 14, calDeparture.SelectedDate))) Then
            calDeparture2.Visible = True
            calDeparture2.SelectedDate = Nothing
            calDeparture2.VisibleDate = DateAdd(DateInterval.Month, 1, calDeparture.SelectedDate)
        Else
            calDeparture2.Visible = False
        End If
        End Sub
    

    好的,既然您已经发布了详细信息,这将成为一个不同的问题。您不知道需要多少个日历,因此您可能希望在代码中创建它们。我建议在您的标记中使用 Panel 控件来包含所有可能的结果日历。然后按照您之前的建议,根据需要创建新的日历对象并将它们添加到“锚”面板的控件集合中。

    Calendar objCal = new Calendar();
    pnlResultsContainer.Controls.Add(objCal);
    

    就设置选定的日子而言,我相信每个日历只能有一个“选定”的日子。但是,您可以通过处理 Calendar.DayRender 事件来设置渲染样式,以及是否启用日期等。也许有人可以帮助我在 C# 中为动态创建的控件设置处理程序?我认为是这样的:

    objCal.DayRender += AddressOf(DynamicDayRenderHandler());
    

    如果这不正确,请更正。

    确定在处理程序中设置样式的正确日期将是针对作为事件参数的 DayRenderEventArgs.Day 对象进行编码的问题。我不知道如何找到您正在寻找的特定日期/间隔,但应该可以通过以下文章中的一些研究:

    How to: Customize Individual Days in a Calendar Web Server Control

    DayRenderEventArgs.Day Property

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-04
      • 1970-01-01
      • 2011-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多