gpt4 book ai didi

c# - 数据绑定(bind)不刷新 Gridview

转载 作者:太空宇宙 更新时间:2023-11-03 19:28:42 30 4
gpt4 key购买 nike

我有一个在代码隐藏中动态绑定(bind)数据的 gridview。出于某种原因,只有当用户从 gridview 中删除一行(使用自定义函数)时,在回发后,gridview 才不会刷新(删除的值仍然存在)。但是,如果用户以任何其他方式刷新 gridview(即添加项目、在另一个选项卡中选择正确的项目等),它就会很好地绑定(bind)。

我在我的代码隐藏中放置了断点以查看发生了什么,显然 gridview 被正确绑定(bind),被删除的项目不在它的 gridview.DataSource 中。

这是我的代码,所以如果您看到我没有看到的内容,请告诉我!

删除行命令:

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

[编辑]有趣的是,它不仅运行,而且当我在运行后检查数据源的内容时(调试时),实际上删除的项目从数据源中删除,它只是不向用户显示更改。

最佳答案

我发现了问题:

GridView 具有预定义的命令设置,例如“选择”、“编辑”和“删除”。当我尝试定义我自己的事件以使用命令名称“delete”运行时,该程序将尝试运行我的部分事件以及它的预定义事件。这就是导致问题的原因。

关于c# - 数据绑定(bind)不刷新 Gridview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6597302/

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