我有一个具有各种状态的列,根据字母改变颜色。
例如,如果字母是'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 :(得分: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;
}