Calendar.aspx.cs Cell.Text 正在复制
Calendar.aspx.cs Cell.Text is duplicating
我们正在尝试为我们的安装团队填充一个日历,该日历显示来自日历中每个日期的货车编号和安装时间查询的不同值。我们有了它,所以在每个单元格中都有一个可点击的日期,它可以执行某些操作,并且在其下方显示一个文本字符串,其中包含 Van # 和时间。然而,这是重复的。
我们以为是字符串,但如果我们构建相同的字符串并将其写入该单元格的工具提示,它就会正确显示。所以这是出于某种原因的单元格文本。
相关代码如下:
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,那么我们会丢失可点击的 Date,但 Install 数据仍然是重复的。
经过更多测试,我们发现带有文本的控件被添加了两次。不知道为什么我们也没有两次看到日期。但我们在这里找到了答案:
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 并且只被添加一次,但这似乎是在其他地方生成的并且可能被解释了。这也解释了工具提示的工作原理,因为它是在添加控件的位置设置的。
我们正在尝试为我们的安装团队填充一个日历,该日历显示来自日历中每个日期的货车编号和安装时间查询的不同值。我们有了它,所以在每个单元格中都有一个可点击的日期,它可以执行某些操作,并且在其下方显示一个文本字符串,其中包含 Van # 和时间。然而,这是重复的。
我们以为是字符串,但如果我们构建相同的字符串并将其写入该单元格的工具提示,它就会正确显示。所以这是出于某种原因的单元格文本。
相关代码如下:
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,那么我们会丢失可点击的 Date,但 Install 数据仍然是重复的。
经过更多测试,我们发现带有文本的控件被添加了两次。不知道为什么我们也没有两次看到日期。但我们在这里找到了答案: 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 并且只被添加一次,但这似乎是在其他地方生成的并且可能被解释了。这也解释了工具提示的工作原理,因为它是在添加控件的位置设置的。