数据绑定不刷新Gridview
本文关键字:Gridview 刷新 数据绑定 | 更新日期: 2023-09-27 18:01:26
我有一个gridview,我在我的代码背后动态数据绑定。由于某种原因,并且只有当用户从gridview中删除一行(使用自定义函数)时,回发后gridview才不会刷新(删除的值保留)。但是,如果用户要以任何其他方式刷新gridview(例如:添加一个项目,在另一个选项卡中选择正确的项目等),它被绑定得很好。
我把断点在我的代码后面,看看发生了什么,显然gridview被正确绑定,被删除的项目不在它的gridview. datasource。
这是我的代码,所以如果你看到什么我没有,请告诉我!
删除 Row-Command:
if (e.CommandName == "delete")
{
int selectedId = int.Parse(e.CommandArgument.ToString());
//delete selected row from database
var item = (Item)DataContext.Items.Where(item => item.ItemId == selectedId).Single();
if (item != null)
{
DataContext.CompanyGoalPrograms.DeleteObject(item);
}
DataContext.SaveChanges();
bindGridView(currentId); //firing, but not refreshing gv after postback
// currentId is a static variable
}
bindGridView方法(每隔一次调用,所以我不认为问题在这里):
protected void bindGridView(long thisId)
{
var query = from items in DataContext.Items
where items.SubSomething.Something.SomethingId == thisId && goals.SubSomething.YearId == selectedYearId //<--another static variable
select items;
Gridview1.DataSource = from items in query.AsEnumerable()
select new
{
items.Field1,
items.Field2,
items.Field3,
Field4 = ((decimal)items.Field4).ToString("N2"),
Field5 = ((decimal)items.Field5).ToString("N2"),
Field6 = String.Format("{0:#,##0}", (long)items.Field6),
Field7 = items.Field4 == null ? "$0.00" : ((decimal)items.Field7).ToString("C"),
};
Gridview1.DataBind();
}
[编辑]有趣的是,它不仅运行,而且当我在运行后检查数据源的内容时(同时调试),实际上被删除的项是从数据源中删除的,它只是不向用户显示更改。
我找到问题了:
Gridviews设置了预定义的命令,例如'select', 'edit'和'delete'。当我尝试用命令名"delete"定义我自己的事件时,程序将尝试运行我的事件的一部分,以及它预定义的事件。
这也完全是我的问题。我正在传递"删除"作为asp:ImageButton的命令名。在我看到你的帖子后,我把它改成了"DeleteThis",它立即开始工作了。像这样的保留词问题....!
感谢您在事实之后发布解决方案。它至少帮助了一个人。
Victor Del Prete
是否bindgridview得到运行确定?您是否在调试模式下运行它以进行验证?