【问题标题】:Convert GridView to List<object>将 GridView 转换为 List<object>
【发布时间】:2014-03-22 04:57:23
【问题描述】:

您好,提前致谢。我在执行我在这里找到的建议时遇到问题:Convert contents of DataGridView to List in C#

我正在从母版页抓取一个 GridView,我需要在表格中添加一行然后重新绑定它。我正在通过母版页上的公共属性访问 GridView,该属性与数据一起返回。所以基本上我已经做到了:

var gsr = master.GridSearchResults;
gsr (gsr != null)
{
   var so = new List<MyProperties>();
   so = gsr .Rows.OfType<DataGridViewRow>().Select(r => r.Cells.OfType<DataGridViewCell>().Select(c => c.Value).ToArray()).ToList<MyProperties>();
   so.Add(new MyProperties()
   {
      Id = id,
      Date = date,
      Building = buildingName,
      Street = streetName
   }
   gsr.DataSource = so;
   gsr.DataBind();
}

但我收到一个错误,它无法将实例参数类型 System.Collections.Generic.IEnumerable 转换为 System.Collections.Generic.IEnumerable。我认为问题是对数组的调用,但如果我删除它,我只会得到相同错误的变体。

【问题讨论】:

  • 你试过用 .AsEnumerable() 代替 .ToList() 吗?
  • 它仍然显示相同的错误,但让我对我的示例进行更正,因为现在缺少部分错误。
  • 你试过 .Cast 吗?
  • GridView 与 DataGridView 不同。它们是不同的对象。 DataGridView 适用于 Windows 窗体,不是吗?而 GridView 用于 ASP.NET。
  • 好的,我知道它们是不同的,并且语句不正确,那么从 GridView 中选择行到列表中的正确方法是什么?

标签: c# asp.net gridview


【解决方案1】:

原来我的问题是我不应该首先获得 gridview,而是获得会话中的 Gridview 源。所以我这样解决了:

        var master = (Tab)Master;
        master.GridSearchResults.DataSource = null;
        var sessions = new Sessions();
        sessions.SlideOutSource.Add(new MyProperties {
                                       Id = Id,
                                       StartDate = hidStartDate.Value,
                                       Installation = txtInstall.Text,
                                       Command = txtCommand.Text  });

        master.GridSearchResults.DataSource = sessions.SlideOutSource;
        master.GridSearchResults.DataBind(); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多