【问题标题】:Cast error when binding a nested grid view to a gridview bound on the linq data result将嵌套网格视图绑定到绑定在 linq 数据结果上的网格视图时出现投射错误
【发布时间】:2011-04-20 12:32:44
【问题描述】:

我有一个父网格视图 (UserTransactionGridView),我将其与此 linq 查询的输出绑定,其输出如下所示: http://postimage.org/image/1vtpbagck/:

        var recordList = (from CustomersRecord custsRecord in customerRecordContainer orderby custsRecord.DateOfTransaction descending group custsRecord 
                          by new {custsRecord.InvoiceNumber, custsRecord.DateOfTransaction} into intermediateResult 
                          select new {InvoiceNumber = intermediateResult.Key.InvoiceNumber, DateOfTransaction = intermediateResult.Key.DateOfTransaction, TotalAmount = intermediateResult.Sum(custsRecord => custsRecord.TotalAmount)}).ToList();
        UserTransactionGridView.DataSource = recordList;
        UserTransactionGridView.DataBind();  

现在,当数据绑定到父网格视图中的每一行时,我将根据每行发票编号创建一个子网格视图 (gridview2)。我的意思是根据每一行的发票编号,我从数据库中获取软件标题并以这种方式将其绑定到子网格视图。我的意图是有这样的输出:http://postimage.org/image/2lri4f544/。我正在做以下事情来实现这一点:

 protected void UserTransactionGridView_RowDataBound(Object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            GridView gridView2 = (GridView)e.Row.FindControl("gridView2");
            System.Data.DataRowView dr = (System.Data.DataRowView)e.Row.DataItem;
            gridView2.AutoGenerateColumns = true;
            String x = dr[1].ToString();
            softwareTitlesList = SoftwareListRetrieve();
            ArrayList titles = new ArrayList();
            foreach (SoftwareTitles softwareTitle in softwareTitlesList)
            {
                if (softwareTitle.InvoiceNumber.Contains(x))
                    titles.Add(softwareTitle.SoftwareTitle);
            }
            gridView2.DataSource = titles;
            gridView2.DataBind();
            softwareTitlesList.Clear();
        }
    }

但我收到如下错误:

Unable to cast object of type '<>f__AnonymousType3`3[System.String,System.DateTime,System.Decimal]' to type 'System.Data.DataRowView'.

【问题讨论】:

    标签: asp.net linq data-binding gridview nested


    【解决方案1】:

    您正在尝试将e.Row.DateItem 转换为DataRowView,我认为这行不通。尝试this example 以供参考。在那篇文章的最后一段代码中,做了类似的事情。

    【讨论】:

    • 非常感谢!!我欠你很多!!说实话,你的链接帮助我完成了我的论文工作,并完成了我的硕士学位。至少可以说我已经完成了今生和永远的学习。我不知道该怎么感谢你!!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 2011-02-24
    • 1970-01-01
    • 2015-11-20
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多