【问题标题】:Unable to cast object of type 'System.Web.UI.WebControls.ListItem' to type 'System.IConvertible'无法将“System.Web.UI.WebControls.ListItem”类型的对象转换为“System.IConvertible”类型
【发布时间】:2016-08-26 20:23:35
【问题描述】:

我正面临这个问题,但无法解决。这是来自列表。有问题 AddOnTriggerItems = gvTriggerProduct.Rows.Cast<GridViewRow>().Select(rowItem => new AddOnTriggerItem()

ProjectA.TEST.BE.AddOn addOn = new ProjectA.TEST.BE.AddOn()
{    
    AddCode = addCode,          
    CreatedTime = DateTime.Now,
    ModifiedTime = DateTime.Now,
    AddOnTriggers = gvTriggerProduct.Rows.Cast<GridViewRow>().Select(row => new AddOnTrigger()
    {
        AddOnTriggerItems = gvTriggerProduct.Rows.Cast<GridViewRow>().Select(rowItem => new AddOnTriggerItem()
        {
            ProductTypeID = gvTriggerProduct.Rows[rowItem.RowIndex].Cells[1].Text.ToString(),
            ProductCode = gvTriggerProduct.Rows[rowItem.RowIndex].Cells[2].Text.ToString(),     
            CreatedTime = DateTime.Now,
            ModifiedTime = DateTime.Now
        }).ToList(),
        ActiveStatus = 1,
        CreatedTime = DateTime.Now,
        ModifiedTime = DateTime.Now
    }).ToList(),
    AddOnProducts = gvAddOnProduct.Rows.Cast<GridViewRow>().Select(rowAddOnProducts => new AddOnProduct()
    {
        ProductTypeID = gvAddOnProduct.Rows[rowItem.RowIndex].Cells[2].Text.ToString(), 
        ProductCode = gvAddOnProduct.Rows[rowItem.RowIndex].Cells[2].Text.ToString(),   
        CreatedTime = DateTime.Now,
        ModifiedTime = DateTime.Now,
        AddOnProductAllotments = addOnProductAllotmentSession.Where(p => (p.ProductID == (Convert.ToString(((HiddenField)rowAddOnProducts.FindControl("ProductID")).Value)))).ToList(),      
    }).ToList()
};

【问题讨论】:

  • 在 AddOnProduct 类中,ProductTypeID 是整数还是字符串?此处发布了类似的错误stackoverflow.com/questions/10407348/…
  • 抛出的错误不在 ProdutTypeID 处。它位于 AddOnTriggerItems = gvTriggerProduct.Rows.Cast().Select(rowItem => new AddOnTriggerItem() AddOnTrigger 是父级,而 AddOnTriggerItems 是子级。这是一对多的关系。不确定我是否正确书写这就像一会儿。
  • 然后检查 AddOnTriggerItem 类中的 ProductTypeID。
  • 我会这样说。将 1 视为 producttypeID 的字符串。我需要掩盖该信息。它最初是一个字节,值转换为字节。实际上它是 Convert.ToByte((((HiddenField)rowItem.FindControl("hfNewProductID")).Value).Split('_')[0]),
  • 假设 gvTriggerProduct 是一个 GridView,为什么要将它的行转换为 GridViewRow?它们应该已经是行了。

标签: c#


【解决方案1】:

感谢 grek 和 derloopkat。 Grek 的提示:问题可能出现在从错误行开始的语句中的任何地方

我更改了 3 个部分。

  1. 我不能有 2 个 gvTriggerProduct。

  2. 我现有代码的一部分(不在此处)。缺少“.Value”。 Grek 的提示 Convert.ToByte(((DropDownList)rowItem.FindControl("ddlMinTriggerQuantity")).SelectedItem

  3. Error: Cannot implicitly convert type 'void' to 'System.Collections.Generic.List'

     List<AddOnTrigger> triggerlist = new List<AddOnTrigger>();
    triggerList.Add(new AddOnTrigger
    {
     AddOnTriggerItems = gvTriggerProduct.Rows.Cast<GridViewRow>().Select(rowItem => new AddOnTriggerItem()
    {
        ProductTypeID = gvTriggerProduct.Rows[rowItem.RowIndex].Cells[1].Text.ToString(),
        ProductCode = gvTriggerProduct.Rows[rowItem.RowIndex].Cells[2].Text.ToString(),     
        CreatedTime = DateTime.Now,
        ModifiedTime = DateTime.Now
    }).ToList(),
    ActiveStatus = 1,
    CreatedTime = DateTime.Now,
    ModifiedTime = DateTime.Now}
    });
    
    ProjectA.TEST.BE.AddOn addOn = new ProjectA.TEST.BE.AddOn()
    { 
       AddCode = addCode,          
       CreatedTime = DateTime.Now,
       ModifiedTime = DateTime.Now,
       AddOnTriggers = triggerlist
       AddOnProducts = gvAddOnProduct.Rows.Cast<GridViewRow>().Select(rowAddOnProducts => new AddOnProduct()
       {
          ProductTypeID =    gvAddOnProduct.Rows[rowItem.RowIndex].Cells[2].Text.ToString(),    
          ProductCode = gvAddOnProduct.Rows[rowItem.RowIndex].Cells[2].Text.ToString(), 
          CreatedTime = DateTime.Now,
          ModifiedTime = DateTime.Now,
          AddOnProductAllotments = addOnProductAllotmentSession.Where(p => (p.ProductID == (Convert.ToString(((HiddenField)rowAddOnProducts.FindControl("ProductID")).Value )))).ToList(),      
    }).ToList()
    
    };
    

【讨论】:

  • 这应该是答案吗?它不是很清楚,如果问题与某些不属于您的问题的代码有关,那么最好删除该问题,因为答案对其他人没有帮助。
猜你喜欢
  • 2015-12-17
  • 2012-03-14
  • 1970-01-01
  • 1970-01-01
  • 2020-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多