2013-08-06 57 views
0

我目前正試圖修改我的radgrid顯示數據的方式,方法是突出顯示超過「過期」限制的特定行。這裏有我使用的方法的一個片段:爲radgrid做條件格式時的空引用異常

ASPX

<telerik:GridBoundColumn DataField="TimeCreated" HeaderText="Posted On" ReadOnly="true" UniqueName="TimeCreated"/> 

C#方法1

protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e) 
    { 
     GridDataItem dataItem = e.Item as GridDataItem; 

     string time = dataItem["TimeCreated"].Text; 
     DateTime timePosted = DateTime.Parse(time); 
     TimeSpan allowance = new TimeSpan(0, 25, 0); 
     DateTime overdue = timePosted.Add(allowance); 

     if (DateTime.Now > overdue) 
     { 
      dataItem.ForeColor = System.Drawing.Color.LightPink; 
      dataItem.Font.Bold = true; 
     } 
    } 

C#方法2

protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e) 
    { 
     GridDataItem dataItem = e.Item as GridDataItem; 
     TimeSpan allowance = new TimeSpan(0, 25, 0); 

     if (DateTime.Compare(Convert.ToDateTime(dataItem["TimeCreated"].Text).Add(allowance), DateTime.Now) > 0) 
     { 
      dataItem.ForeColor = System.Drawing.Color.LightPink; 
      dataItem.Font.Bold = true; 
     } 
    } 

C#方法3

protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e) 
    { 
     GridDataItem dataItem = e.Item as GridDataItem; 
     TimeSpan allowance = new TimeSpan(0, 25, 0); 


     if (DateTime.Parse(dataItem["TimeCreated"].Text).Add(allowance) > DateTime.Now) 
     { 
      dataItem.ForeColor = System.Drawing.Color.LightPink; 
      dataItem.Font.Bold = true; 
     } 
    } 

所有這些方法都會產生相同的NullReferenceException,這對我來說是不可思議的,我希望有人能夠對此有所瞭解。感謝

回答

0

看來,我錯過了一個if語句來我的預期列的網格行結合細胞...

這裏的正確方法

protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e) 
    { 
     if (e.Item is GridDataItem) // bind the intended column cells 
     { 
      GridDataItem dataItem = e.Item as GridDataItem; 
      TimeSpan allowance = new TimeSpan(0, 25, 0); 

      if (DateTime.Parse(dataItem["TimeCreated"].Text).Add(allowance) < DateTime.Now) 
      { 
       dataItem.BackColor = System.Drawing.Color.LightPink; 
       dataItem.Font.Bold = true; 
      } 
     } 
    }