我下面有这段代码,我试图将数据position and result
放入我的searchlist
中,但是当我尝试将其放入此处的代码GridView1.DataSource = list;
中时,它总是给我一个错误{{ 1}}我要完成的工作是将System.InvalidOperationException: 'Data source is an invalid type. It must be either an IListSource, IEnumerable, or IDataSource.'
中的数据放入我的gridview中。我不确定为什么这种情况持续发生,将不胜感激
Weather and coord
答案 0 :(得分:2)
我要完成的工作是将来自Weather的数据并协调到我的gridview中。
如果要在网格中包含所有数据,则需要将其投影为包含所有内容的类型。
using System.Linq;
//...
//... code removed for brevity
var list = json.Deserialize<SearchList>(resString);
var data = list.weather.Select(item => new {
lon = list.coord.lon,
lat = list.coord.lat,
id = item.id,
main = item.main,
description = item.description,
icon = item.icon
});
GridView1.DataSource = data;
GridView1.DataBind();
//... code removed for brevity
这意味着lon
属性中的每个项目都将重复lat
和weather
。
如果要单独显示这些属性,请填充另一个控件。
答案 1 :(得分:0)
list
只是SearchList
的一个实例,因此没有实现IEnumerable
或异常中提到的其他接口(实际上是任何List
,Array
或其他强类型集合)。
如果要在网格中显示坐标,则它们应该是Result
类型的属性。
GridView1.DataSource = list.weather;
GridView1.DataBind();
如果仅打算显示一个坐标,则应重新考虑控件的选择或添加其他控件,例如Label
[coords] {list.Position} - Label
[id, name, description, icon] {list.weather[0]} - GridViewRow
[id, name, description, icon] {list.weather[1]} - GridViewRow
[id, name, description, icon] {list.weather[2]} - GridViewRow