我尝试使用linq在网格视图中填充数据.. 我试试这个
private void populateveh()
{
TData1 tg = new TData1();
GridView1.DataSource = tg.select_regionveh();
GridView1.DataBind();
}.
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
this.populateveh();
}
但这显示错误
Data source is an invalid type. It must be either an IListSource, IEnumerable, or IDataSource.
在这一行 GridView1.DataSource = tg.select_regionveh();
方法
#region Function Imports
/// <summary>
/// No Metadata Documentation available.
/// </summary>
public int select_regionveh()
{
return base.ExecuteFunction("select_regionveh");
}
#endregion
}
任何解决方案?
答案 0 :(得分:1)
虽然你没有这么说,但我假设你的对象GridView1是一个DataGridView。根据{{3}},必须实现以下四个接口之一:
这意味着DataSource属性只能用于显示一系列项目,而不仅仅是一个项目。
您想要显示TData1.select_regionveh()的返回值。此返回值不是序列,它只是一个整数。
也许您只想用这个整数填充DataGridView?
在这种情况下,有两种可能的方法:
<强> DataGridViewRowCollection 强>
如果已为DataGridView定义了列,则可以按如下方式添加单个项目:
int addedRowIndex = GridView1.Rows.Add();
DataGridViewRow addedRow = Gridview1.Rows[addedRowIndex];
addedRow.Cells[columnValue.Index] = tg.select_regionveh();
addedRow.Cells[collumnDescription.Index] = ... // other columns
BindingList方法
您可以创建类型为T的绑定列表,其中T是您在行中所需的类型。将返回的整数添加到此列表中:
BindingList<MyType> bindingList = new BindingList<MyType>();
MyType x = new MyType()
{
myProperty1 = tg.select_regionveh(),
myotherproperty = ...,
}
bindingList.Add(x);
GridView1.DataSource = bindingList;
使用类型化绑定列表的优点是,在向datagridview写入值或从datagridview读取值时,不必逐个填充单元格。您只需读取并将它们写入BindingList。
缺点是操作员在编辑DataGridview的单元格时自由度较低。例如,如果您的BindingList显示DateTime属性,则显示值必须始终采用可以解析为DateTime的格式。用户不能说:“现在我只填补这一年。在我按OK之前我填写了剩余的字段”