2014-03-04 50 views
0

我有一列有各种状态,根据字母改变颜色。GridView中的OnDatabound事件无法正常工作编辑

例如,如果字母是“R”,那么细胞是红色的,如果“G”,那么绿,等...

问题是这样的初步工作,但那么当用户编辑记录和变化颜色不更新到相应字母的状态。

请看看代码,让我知道我做错了:

if (dataItem != null) 
      { 
       var label = dataItem["Status"].FindControl("StatusID") as Label; 

       if (label != null) 
       { 

        var item = dataItem; 
        var text = label.Text; 

        switch (text) 
        { 
         case "G": 
          item["Status"].BackColor = Color.Green; 

          break; 
         case "Y": 
          item["Status"].BackColor = Color.Yellow; 
          break; 
         case "O": 
          item["Status"].BackColor = Color.Orange; 
          break; 
         case "M": 
          item["Status"].BackColor = Color.SaddleBrown; 
          break; 
         case "R": 
          item["Status"].BackColor = Color.Red; 
          break; 
         case " ": 
          item["Status"].BackColor = Color.Gray; 
          break; 
        } 
       } 
      } 

立即更新 当我去编辑记录的一些记录不允许我更新它们。

<EditItemTemplate> 
    <telerik:RadComboBox ID="StatusDDL" runat="server" SelectedValue='<%# 
Bind("Status")%>' DataTextField="Status" Width="100px" Skin="Metro" style="margin-top: 5px; margin-bottom: 5px" DataValueField="Status" DataSourceID="StatusFilter" TabIndex="7" AppendDataBoundItems="True"></telerik:RadComboBox>      
</EditItemTemplate> 


<ItemTemplate> 
    <asp:Label runat="server" ID="StatusID" Text='<%# Bind("Status")%>'></asp:Label> 
</ItemTemplate> 
+0

你编辑后再次绑定完成? – Bharadwaj

+0

@Bharadwaj,no。我应该调用TestGrid.Rebind();方法? – CSharpDev4Evr

回答

0

发现我的解决方案:

if (dataItem == null) return; 

    switch (dataItem["Status"].Text) 
    { 
     case "G": 
      dataItem["Status"].BackColor = Color.Green; 

      break; 
     case "Y": 
      dataItem["Status"].BackColor = Color.Yellow; 
      break; 
     case "O": 
      dataItem["Status"].BackColor = Color.Orange; 
      break; 
     case "M": 
      dataItem["Status"].BackColor = Color.SaddleBrown; 
      break; 
     case "R": 
      dataItem["Status"].BackColor = Color.Red; 
      break; 
     case " ": 
      dataItem["Status"].BackColor = Color.Gray; 
      break; 
    }