我们正在尝试为我们的安装团队填充日历,该日历显示日历中每个日期的范数和安装时间查询中的不同值。我们拥有它,因此每个单元格中都有一个可点击的日期可以执行某些操作,而在此之下,文本字符串会显示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,那么我们会丢失可点击的日期,但安装数据仍然是重复的。
答案 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的位置。