0

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()**
             )
          );
4

1 回答 1

1

我建议使用 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 可以为空,您将不得不处理这个问题。告诉我,如果需要,我会编辑这段代码。

于 2013-02-27T08:49:57.047 回答