0

わかりSystem.Tuple'2[System.DateTime,System.Boolean]ました、キャストできません (システムは、以下のコードにコメントErrorSystem.Collections.Generic.List'1[System.Tuple'2[System.DateTime,System.Boolean]]を入れた行に例外を表示します)

しかし、どうすればList<Tuple>リピーターにバインドできますか。

このタスクのためだけにインターフェイスまたはクラスを作成せずにこれを達成する方法はありません。

これが私のコードです

#region Fields
ControllerProg controllerProg = new ControllerProg();
List<Tuple<DateTime, Boolean>> lstDatePagination = new List<Tuple<DateTime, Boolean>>();
List<DateTime> dtPag = new List<DateTime>();
#endregion

dtPag = controllerProg.ListDates(15);
if (dtPag.Count > 0)
{
    double j = 1;
    for (int i = 0; i < 15; i++)
    {
        if (dtPag.Count > i && dtPag[i] != null)
        {
            lstDatePagination.Add(Tuple.Create(dtPag[i], true));
        }
        else
        {
            lstDatePagination.Add(Tuple.Create(dtPag.Last().AddDays(j), false));
            j++;
        }
    }
    rptPagination.DataSource = lstDatePagination;
    rptPagination.DataBind();
}

protected void rptPagination_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        // Error
        List<Tuple<DateTime, Boolean>> datePagination = (List<Tuple<DateTime, Boolean>>)e.Item.DataItem;
        // InvalidCastException was unhandled by user code

        Label lblDay = (Label)e.Item.FindControl("lblDay");
        lblDay.Text = datePagination[0].Item1.ToString("dd/MM/yyyy");
        lblDay.Enabled = datePagination[0].Item2;
    }
}

コードについて簡単に説明すると、特定の 1 つの選択ですべての日付を取得し、for

私の質問は、RepeaterItemEventArgsインターフェイスとクラスなしでリストをバインドする方法についてです。(List<> と同じように)

4

1 に答える 1

3

Tuple<DateTime, Boolean>もちろん、 aを a にキャストすることはできませんList<Tuple<DateTime, Boolean>>。試す:

protected void rptPagination_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        // Error
        Tuple<DateTime, Boolean> datePagination = (Tuple<DateTime, Boolean>)e.Item.DataItem;

        Label lblDay = (Label)FindControl("lblDay");
        lblDay.Text = datePagination.Item1.ToString("dd/MM/yyyy");
        lblDay.Enabled = datePagination.Item2;
    }
}
于 2012-11-20T18:08:01.860 に答える