【问题标题】:multiple query assign to gridview control in asp.net c# using linq使用linq在asp.net c#中将多个查询分配给gridview控件
【发布时间】:2013-02-27 04:40:16
【问题描述】:

通过此代码我得到错误“输入数组长于此表中的列数”

DataTable dtMain = new DataTable();
var qry = from c in db.Categories where c.SubCategoryName.Contains(txtSearch.Text.Trim()) select c;
foreach (var k in qry)
{
      var qry1 = from c in db.ProductMasters where c.ProductNameID == k.CategoryID
                  select new { ProductID = c.ProductID, 
                               TagID = c.TagID, 
                               ProductNameID = (from d in db.Categories 
                                                where d.CategoryID == c.ProductNameID 
                                                select d.SubCategoryName).FirstOrDefault(),
                               CategoryID = (from d in db.Categories 
                                                 where d.CategoryID == c.CategoryID 
                                                 select d.CategoryName).FirstOrDefault(), 
                               ProductType = c.ProductType, 
                               Maker = c.Maker, 
                               Model = c.Model, 
                               SerialNo = c.SerialNo, 
                               MACAddress = c.MACAddress, 
                               Warranty = c.Warranty, 
                               Price = c.Price, 
                               ProductOrderNo = c.ProductOrderNo, 
                               VendorID = (from d in db.Vendors 
                                           where d.VendorID == c.VendorID 
                                           select d.VendorName).FirstOrDefault(), 
                               PurchaseDate = c.PurchaseDate.ToString().Substring(0, 10), 
                               ProductStatus = c.ProductStatus, 
                               Remark = c.Remark };
     dtMain.Rows.Add(qry1);

 }

gridProduct.DataSource = dtMain;
gridProduct.DataBind();

【问题讨论】:

  • 这不是数据表的工作方式。考虑改用BindingList<T>

标签: c# asp.net linq gridview


【解决方案1】:

数据表适用于行和列的概念。您需要先提及所有列名。像这样向数据表添加行。

DataTable dtMain = new DataTable();


for (int i = 0; i < rows .Count(); i++)
            {

                DataRow datarowObj= dtMain .NewRow();
                datarowObj["A"] = yourValue;
                datarowObj["B"] = yourValue;
                datarowObj["C"] = yourValue;
                dtMain .Rows.Add(datarowObj);
            }

另外,正如 SLAKS 提到的关于 bindingList 的那样。您可以使用。绑定列表

return new BindingList<YourClass>(qry1.ToList())

【讨论】:

    猜你喜欢
    • 2010-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多