DataBind List <tuple <datetime,boolean =“”>&gt;进入Repeater </tuple <datetime,>

时间:2012-11-20 18:00:03

标签: c# asp.net repeater bind tuples

好的,我无法将System.Tuple'2[System.DateTime,System.Boolean]强制转换为System.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;
    }
}

要创建关于代码的简短说明,我将在一个特定选择中获取所有日期,填补for

中的空白

我的问题是如何将List绑定到没有接口和类的RepeaterItemEventArgs。 (就像我们使用List&lt;&gt;)

1 个答案:

答案 0 :(得分:3)

当然,您无法将Tuple<DateTime, Boolean>投射到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;
    }
}