2011-07-06 129 views
1

我有一个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(); 
    } 

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

+1

只是把它弄出来的方式,尝试'Gridview1.DataSource =(从...)ToList();',看看是否有什么差别。 –

+0

您的AJAX更新面板中的gridview? –

+0

@Bala R nope ...它仍然显示 –

回答

5

我想通了这个问题:

GridView的有设置预定义的命令,如“选择”,“编辑”和“删除”。当我尝试将自己的事件定义为使用命令名称'delete'运行时,程序会尝试并在预定义事件旁边运行部分事件。这是导致问题的原因。

0

bindgridview是否可以正常运行?你有没有在调试模式下运行它来验证?

+0

是的。有趣的是,它不仅运行,而且当它在运行之后(在调试时)检查数据源的内容*时,被删除的项目实际*被从数据源中移除,它不会向用户显示更改 –

1

这完全是我的问题。我传递“Delete”作为asp:ImageButton的CommandName。看到你的帖子后,我改变它通过“DeleteThis”,它立即开始工作。像这些保留字问题....!

感谢您在事后发布解决方案。它至少帮助了一个人。

维克多德尔Prete