0

这是场景: -Gridview 控件 -Calendar 控件

我只希望日历显示是否在网格视图中的下拉列表中选择了特定项目。当网格视图行更新时,我想更改日历是否可见。日历的可见性仅在下一个帖子中正确显示。

4

2 回答 2

0

Page_Load 在渲染之前调用的事件之前调用。在您的事件中,您没有理由不能检查下拉列表的值并设置日历控件的可见属性,这会导致渲染。

于 2009-12-04T16:44:06.170 回答
0

尝试在设置加载 GridView 之前添加对 IsPostBack 的检查。这将防止您覆盖它的值。

protected void Page_Load(object sender, EventArgs e) {
    if(!IsPostBack) {
         /*Populate your GridView*/
    }
}

protected void GridView_RowUpdated(object sender, GridViewUpdatedEventArgs e) 
{
    /*show your calendar here if you need to*/
    if(whatever) calendar.Visible = true;
}

这应该可以工作,如果没有,那么我建议在您的 Page_Load 和 RowUpdated 方法中放置断点并单步执行,最好在 gridview 的数据源上使用 Watch (如果更改它会变红)和日历上的 watch .Visible,帮助您查看是否有变化。

为了记录,像 OnRowUpdated 这样的控制事件永远不会在 Page_Load 之前触发,除非出于某种原因显式调用。您可能只是在做一些事情,它在到达 RowUpdated 方法之前没有更新 GridView 的内容,或者由于缺少 !IsPostBack 检查而覆盖了 GridView 中的数据。

于 2009-12-04T16:46:01.360 回答