从DataTable填充MVC Webgrid

tom*_*ipe 5 webgrid asp.net-mvc-3

我试图使用DataTable填充MVC Webgrid,DataTable在后面的代码中构建,然后使用AsEnumerable()扩展方法进行枚举.

但是,当我调用GetHtml方法时,输出不是我所期望的,它包含两列HasErrors和RowError,而没有我定义的列.

我错过了什么吗?

        DataTable table = new DataTable();
        table.Columns.Add("I/Dia");

        foreach (var item in Variations.Where(item => !table.Columns.Contains(item.CrossSectionalDiameter)))
        {
            table.Columns.Add(item.CrossSectionalDiameter);
        }

        foreach (var item in Variations)
        {
            var r = table.Rows.Add();
            r["I/Dia"] = item.InternalDiameter;
            r[item.CrossSectionalDiameter] = item.Price;
        }

        return table.AsEnumerable();
Run Code Online (Sandbox Code Playgroud)

小智 11

我有类似的问题.最后根据你的评论做一些工作.

        var result = new List<dynamic>();
        foreach (DataRow row in table.Rows)
        {
            var obj = (IDictionary<string, object>)new ExpandoObject();
            foreach (DataColumn col in table.Columns)
            {
                obj.Add(col.ColumnName, row[col.ColumnName]);
            }
            result.Add(obj);
        }
        var grid = new WebGrid(result)
Run Code Online (Sandbox Code Playgroud)