0

FormatException がユーザー コードによって処理されませんでした。
文字列は有効な DateTime として認識されませんでした。

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 が null になる可能性がある場合は、これを処理する必要があります。必要に応じてこのコードを編集します。

于 2013-02-27T08:49:57.047 に答える