Asp.net 使用 Entity Framework 进行 GridView 搜索
Asp.net GridView search with Entity Framework
我收到这个错误:
Data source is an invalid type. It must be either an IListSource,
IEnumerable, or IDataSource.
我的代码:
protected void Button1_Click(object sender, EventArgs e)
{
JobShopEntities job = new JobShopEntities();
GridView1.DataSource = (from x in job.JobDescriptions where (x.Titlu == TextBox1.Text) select x).First();
GridView1.DataBind();
}
我搜索了很多解决方案。从这里我得到了这个解决方案。
后端的其余代码以防与错误有关。
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridViewRow row = GridView1.Rows[e.NewEditIndex];
int rowId = Convert.ToInt32(row.Cells[1].Text);
Response.Redirect("~/Administrator/Management/ManageJobs.aspx?id=" + rowId);
}
您将网格与对象绑定在一起,因为 First 会给您一个对象而不是集合,而 DataSource 需要一个集合。如果您不需要将 gridview 与单个记录绑定,那么您可以删除 First
方法的调用并调用 ToList() 来获取记录列表。
如果您只需要第一条记录,那么您可以使用 Enumerable.Take,这将 return 您 IEnumerable<TSource>
GridView1.DataSource = (from x in job.JobDescriptions
where (x.Titlu == TextBox1.Text) select x).Take(1);
根据 OP
的评论编辑
如果您绑定了所有记录,那么您应该知道 table 中有多少条记录。如果记录以千为单位,那么您可以考虑分页。
如果记录成百上千,那么您可以使用相同的方法,在 Page_Load 事件中使用不带 where 子句的查询。
if(!Page.IsPostBack)
{
JobShopEntities job = new JobShopEntities();
GridView1.DataSource = (from x in job.JobDescriptions).ToList();
GridView1.DataBind();
}
我收到这个错误:
Data source is an invalid type. It must be either an IListSource, IEnumerable, or IDataSource.
我的代码:
protected void Button1_Click(object sender, EventArgs e)
{
JobShopEntities job = new JobShopEntities();
GridView1.DataSource = (from x in job.JobDescriptions where (x.Titlu == TextBox1.Text) select x).First();
GridView1.DataBind();
}
我搜索了很多解决方案。从这里我得到了这个解决方案。
后端的其余代码以防与错误有关。
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridViewRow row = GridView1.Rows[e.NewEditIndex];
int rowId = Convert.ToInt32(row.Cells[1].Text);
Response.Redirect("~/Administrator/Management/ManageJobs.aspx?id=" + rowId);
}
您将网格与对象绑定在一起,因为 First 会给您一个对象而不是集合,而 DataSource 需要一个集合。如果您不需要将 gridview 与单个记录绑定,那么您可以删除 First
方法的调用并调用 ToList() 来获取记录列表。
如果您只需要第一条记录,那么您可以使用 Enumerable.Take,这将 return 您 IEnumerable<TSource>
GridView1.DataSource = (from x in job.JobDescriptions
where (x.Titlu == TextBox1.Text) select x).Take(1);
根据 OP
的评论编辑如果您绑定了所有记录,那么您应该知道 table 中有多少条记录。如果记录以千为单位,那么您可以考虑分页。
如果记录成百上千,那么您可以使用相同的方法,在 Page_Load 事件中使用不带 where 子句的查询。
if(!Page.IsPostBack)
{
JobShopEntities job = new JobShopEntities();
GridView1.DataSource = (from x in job.JobDescriptions).ToList();
GridView1.DataBind();
}