Calendar.aspx.cs Cell.Text正在重复

时间:2018-02-14 00:02:09

标签: c# calendar web-controls

我们正在尝试为我们的安装团队填充日历,该日历显示日历中每个日期的范数和安装时间查询中的不同值。我们拥有它,因此每个单元格中都有一个可点击的日期可以执行某些操作,而在此之下,文本字符串会显示Van#和Time。但这是重复的。

我们认为它是String,但是如果我们构建相同的字符串并将其写入该Cell的ToolTip,它就会正确显示。因此,出于某种原因,它是单元格文本。

以下是相关代码:

protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
    {
        String Install = "";
        String ToolTip = "";
        Literal insta = new Literal();
        Literal lit = new Literal();
        e.Cell.BackColor = System.Drawing.Color.SkyBlue;

        var rows = (from row in socialEvents.AsEnumerable()
                    where DateTime.Parse(row["InstallDate"].ToString()) >= e.Day.Date &&
                          DateTime.Parse(row["InstallDate"].ToString()) < e.Day.Date.AddDays(1)
                          select new
                          {
                            VanNum = row["VanNum"],
                            InstallTime = row["InstallTime"]
                          }).Distinct();

        foreach (var row in rows)
        {
            String MyInstall = "";
            MyInstall = "Van #: " + row.VanNum.ToString() + " / Install Time: " + row.InstallTime.ToString();
            Install = Install + "<br/>" + MyInstall;
            ToolTip = ToolTip + "/n" + MyInstall;
        }


        e.Cell.ToolTip = ToolTip;
        lit.Visible = true;
        e.Cell.Controls.Add(lit);
        insta.Text = Install;
        insta.Visible = true;
        e.Cell.Controls.Add(insta);

    }

e.Cell.ToolTip将显示3行,但Cell Control中的Literal insta.Text将显示两行。 Literal lit似乎添加了可点击日期(我承认,我不知道它是如何做到的)这就是为什么有两个Literal Controls。如果我们只编写一个Literal Control,那么我们会丢失可点击的日期,但安装数据仍然是重复的。

1 个答案:

答案 0 :(得分:0)

经过多次测试后,我们发现带有文本的控件被添加了两次。不知道为什么我们也没有两次看到日期。但我们在这里找到答案: https://forums.asp.net/t/453021.aspx?My+DayRender+event+is+happening+twice+and+I+don+t+know+why+

DayRender事件被触发两次,因此移除

OnDayRender="Calendar1_DayRender"

从ascx页面删除了多余的触发和文本仅显示一次。我仍然不确定为什么Date被添加到lit并且只有一次,但这似乎是在其他地方生成的并且可能被解释。这也解释了工具提示的工作原理,因为它被设置为添加Control的位置。