我有一个GridView,我在我的代码隐藏中动态绑定了数据。出于某种原因,并且只有当用户从gridview中删除行(使用自定义函数)时,在回发之后,gridview不会刷新(保留删除的值)。但是,如果用户以任何其他方式刷新gridview(即添加一个项目,在另一个选项卡中选择正确的项目等),它就会很好。Databind不刷新Gridview
我在我的codebehind中看到发生了什么断点,显然gridview被绑定正确,被删除的项目不在它的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();
}
[编辑] 有趣的是,它不仅运行,但当我运行后(当调试时)检查数据源的内容时,实际上被删除的项目是从数据源中删除的,它只是不显示对用户的更改。
只是把它弄出来的方式,尝试'Gridview1.DataSource =(从...)ToList();',看看是否有什么差别。 –
您的AJAX更新面板中的gridview? –
@Bala R nope ...它仍然显示 –