2011-04-20 50 views
0

我有一个父网格视图(UserTransactionGridView),我绑定从这个linq查询输出结果如下所示: http://postimage.org/image/1vtpbagck/当嵌套的网格视图绑定到linq数据结果上的gridview绑定嵌套的网格视图时出现错误

 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'. 

回答

1

您正在试图e.Row.DateItem转换为DataRowView,我不认为会工作。尝试this example以供参考。在那篇文章的最后一段代码中,类似的事情完成了。

+0

非常感谢你!我非常感谢你!告诉你真相你的链接帮助我完成了我的论文工作,并且更多地完成了我的硕士学位。并且至少可以说我已经完成了对今生和永远的研究。我不知道该如何谢谢你! – 2011-04-20 14:09:53