生成动态日历控件

时间:2011-04-29 16:44:27

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

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

我最近出现过一次实际测试,他们有下面提到的要求

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

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

  3. 重复有2下拉:

    1)日下拉:它的价值是:每隔一天,每隔一天,每隔三天

    2)持续时间下拉:值为:日,月,周,年

    重复有2下拉:

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

    2)日:周日,周一......周六

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

    对于过滤目的,如果我选择第一个星期日(来自重复选项),则应选择第一个星期日的动态日历。如果我每隔三天选择一次,则应选择每隔3天(在动态生成的日历中)

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

    怎么做?如何生成动态日历?

    如果不理解问题,请告诉我。

    传递给我类似于最少的代码

    谢谢!

1 个答案:

答案 0 :(得分:0)

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

我不确定你到底想要什么,因为我不知道用户将选择1月1日/ 6月1日日期的控制类型,或者第3个星期日与之相关的内容。只有一个日历吗?如果以下信息对您没有帮助,请再解释一下。

我会从我的某个应用中粘贴一些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对象,并将它们添加到“anchor”Panel的Controls集合中。

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

希望这有帮助。