Попробуйте добавить проверку IsPostBack перед установкой загрузки вашего GridView. Это не даст вам перезаписать его значения.
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 и пройти через них, предпочтительно с помощью Watch на источнике данных gridview (он станет красным, если он будет изменен) и смотреть в календаре. Visible, чтобы помочь вам увидеть, если что-то изменилось.
Для записи, управляющие события, такие как OnRowUpdated, никогда не сработают до Page_Load, если не вызваны явно по какой-то причине. Скорее всего, вы просто делаете что-то, что не обновляет содержимое GridView до того, как оно попадает в метод RowUpdated, или перезаписывает данные в GridView из-за отсутствия проверки! IsPostBack.