2011-06-03 62 views
0

我有一个更新面板中的gridview也是我的下拉列表。从下拉列表的触发器中,我使用所选值刷新了我的gridview。所有这一切工作正常。问题是我也在页面上显示gridview行数,该页面也在updatepanel内。更新似乎正在发生,一个选择太晚了。GridView RowCount后期更新updatepanel

protected void Drop_Change(object sender, EventArgs e) 
{ 
    String Value = AjaxDrop.SelectedValue; 
    GridView1.SelectParameters["Target"].DefaultValue=Value; 
    RowCount.InnerText = GridView1.Rows.Count.ToString(); 
} 

我认为其背后发生的一个选择,因为参数更新gridview的行数为时已晚,该行计数值有,什么是围绕一个工作参数传递后获得的实际值。只有我能想到的方式是使用JavaScript,我想知道这是否会起作用。我希望的解决方案是将它全部保留在服务器端。

回答

1

当你调用它的时候,GridView并没有完成它的数据绑定,因此这个值是无效的。将RowCount.InnerText更新移动到DataBinding事件(例如Page_OnPreRender)之后执行的某处,或者在更新行计数之前强制DataBinding发生。

值得注意的是,如果您使用的是GridView分页,GridView.Rows.Count不是可靠的信息源 - 因为这将成为一页中的行数,即使查询返回的行数更多。

+0

我把它扔到一个Page_PreRender方法中,仍然得到相同的行为 – Eric 2011-06-03 17:25:53

+0

你是对的,在我强制gridview数据绑定之前,它的工作.thx – Eric 2011-06-03 17:28:01