用户代码未处理FormatException。
该字符串未被识别为有效的日期时间。
protected void Page_Load(object sender, EventArgs e)
{
// to simulate a database query
socialEvents = new DataTable();
socialEvents.Columns.Add(new DataColumn("Date", typeof(DateTime)));
socialEvents.Columns.Add(new DataColumn("Description", typeof(string)));
socialEvents.Columns.Add(new DataColumn("Url", typeof(string)));
DataRow row;
row = socialEvents.NewRow();
row["Date"] = DateTime.Now.AddDays(-5);
row["Description"] = "Work";
row["Url"] = "http://www.url.cz";
socialEvents.Rows.Add(row);
}
下列方法出错:
protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{
**DataRow[] rows = socialEvents.Select(
String.Format(
"Date >= #{0}# AND Date < #{1}#",
e.Day.Date.ToShortDateString(),
e.Day.Date.AddDays(1).ToShortDateString()**
)
);
我建议使用LINQ来做这件事:
protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{
var rows = socialEvents.Rows.Cast<DataRow>
.Where(r => (DateTime)r["Date"] >= e.Day.Date
&& (DateTime)r["Date"] <= e.Day.Date.AddDays(1))
.ToArray();
);
对于字符串格式的查询没有更多的麻烦:您可以使用基于实际值的过滤器。
当然,如果Date可以为空,您将不得不处理这个问题。请告诉我,如果需要的话我会编辑这段代码。