gpt4 book ai didi

c# - 使用 Entity Framework 的 Asp.net GridView 搜索

转载 作者:太空宇宙 更新时间:2023-11-03 13:07:34 25 4
gpt4 key购买 nike

我收到这个错误:

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);
}

最佳答案

您将网格与对象绑定(bind)在一起,因为 First 会给您一个对象而不是集合,而 DataSource 需要一个集合。如果您不需要将 gridview 与单个记录绑定(bind),那么您可以删除 First 的调用。方法并调用 ToList() 以获取记录列表。

如果你只需要第一条记录那么你可以使用Enumerable.Take这将返回给你IEnumerable<TSource>

 GridView1.DataSource = (from x in job.JobDescriptions 
where (x.Titlu == TextBox1.Text) select x).Take(1);

根据 OP 的评论编辑

如果您绑定(bind)了所有记录,那么您应该知道表中有多少条记录。如果记录以千为单位,那么您可以考虑分页。

如果记录成百上千,那么您可以使用相同的方法,在 Page_Load 事件中使用不带 where 子句的查询。

if(!Page.IsPostBack)
{
JobShopEntities job = new JobShopEntities();
GridView1.DataSource = (from x in job.JobDescriptions).ToList();
GridView1.DataBind();
}

关于c# - 使用 Entity Framework 的 Asp.net GridView 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30229140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com