2011-05-09 67 views
0

我正在更改DayRender控件中单个单元格的背景颜色,但是当选择其他日期时,我为单元格选择的背景颜色会丢失。我环顾四周,无法真正找到我所需要的。希望代码能够让我的代码更清晰一些。当选择新日期时,DayRender单元格更改丢失

protected void Calendar1_DayRender(object sender, DayRenderEventArgs e) 
{String sFullDate, sTradacomsDate; 
    XmlNode node; 

    sFullDate = e.Day.Date.Day.ToString("00") + "/" + e.Day.Date.Month.ToString("00") + "/" + e.Day.Date.Year.ToString(); 
    sTradacomsDate = e.Day.Date.Year.ToString().Substring(2,2) + e.Day.Date.Month.ToString("00") + e.Day.Date.Day.ToString("00"); 

    if (xmlDoc != null) 
    { 
     node = xmlDoc.SelectSingleNode("Dates/dbo.ASNs[FileDate = '" + sFullDate + "']"); 

     if (node != null) 
     { 
      e.Cell.BackColor = System.Drawing.Color.YellowGreen; 
      e.Cell.ForeColor = System.Drawing.Color.White; 
     } 
    } 
    if (xmlDoc2 != null) 
    { 
     node = xmlDoc.SelectSingleNode("Dates/dbo.Orders[DateOrderPlaced = '" + sTradacomsDate + "']"); 

     if (node != null) 
     { 
      if (e.Cell.BackColor == System.Drawing.Color.Green) 
      { 
       e.Cell.BackColor = System.Drawing.Color.Orange; 
       e.Cell.ForeColor = System.Drawing.Color.White; 
      } 
      else 
      { 
       e.Cell.BackColor = System.Drawing.Color.Blue; 
      } 
     } 
    } 

回答

0

我的猜测是,您没有为控件启用ViewState。当您选择一个日期时,它会执行回复以处理该事件;如果ViewState关闭并且不重置单元格颜色,则它们将恢复为默认状态。确保在页面,用户控件和日历控件级别启用EnableViewState="true"

+0

感谢您的回复,我已将enableviewstate设置为true,但日期更改时背景颜色仍会恢复为默认背景颜色。 – Redseven 2011-05-09 14:14:40

+0

你能发布更多源代码吗?例如,您确定在回发期间xmlDoc和xmlDoc2不为空吗?在Page_Load中有if(!IsPostBack)是很常见的 - 你是否这样做,以便假定Calendar1_DayRender的数据源没有正确设置?您是否调试过并设置了一个断点以确保if块在回发期间按预期运行? – 2011-05-09 14:28:32

+0

Ahh我很愚蠢,我的xmldocuments在重新加载时为null,因为它们被封装在!isPostBack中,就像你提到的那样。 谢谢! – Redseven 2011-05-09 14:34:08

相关问题