0

好的,我无法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

我的问题实际上是关于如何将列表绑定到RepeaterItemEventArgs没有接口和类的列表中。(就像我们对 List<> 所做的那样)

4

1 回答 1

3

当然,您不能将 aTuple<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;
    }
}
于 2012-11-20T18:08:01.860 回答