DataGrid中由某列的值设定行的颜色 

解决方案 »

  1.   

    使用itemtemplate,在itemtemplate中自定义是可以的
      

  2.   

    ItemCreated(...)中加入
    if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
      e.Item.Attributes.Add("style","this.style.backgroundColor='"+ColorValue+"'");
    }ColorValue这个变量等于列值转换成RGB
      

  3.   

    我的意思是问. 例如 column1 的值为 A 时, datagrid 的这一行就要设为红色.    
    column1 的值不为 A 时, datagrid 的这一行就继续使用原来的颜色    
      

  4.   

    private void DataGrid1_ItemDataBound(object sender,System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if( e.Item.ItemType == ListItemType.Item || e.Item.ItemType ==  ListItemType.AlternatingItem )
    {
    if(e.Item.Cells[1].Text=="A")
    e.Item.Attributes.Add("bgcolor","red");
    }
    }
      

  5.   

    private void DataGrid1_ItemDataBound(object sender,System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if( e.Item.ItemType == ListItemType.Item || e.Item.ItemType ==  ListItemType.AlternatingItem )
    {
    if(e.Item.Cells[1].Text=="A")
    e.Item.Attributes.Add("bgcolor","red");
    }
    }
      

  6.   

    例子
    <%@ Page Language="C#" AutoEventWireup="True" %>
    <%@ Import Namespace="System.Data" %>
    <script>
    function getSendSMS(o)
    {
    alert(o.innerText)
    }
    </script>
    <html>
    <script language="C#" runat="server"> 
    ICollection CreateDataSource() 
    {
    DataTable dt = new DataTable();
    DataRow dr;dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
    dt.Columns.Add(new DataColumn("StringValue", typeof(string)));
    dt.Columns.Add(new DataColumn("CurrencyValue", typeof(double)));for (int i = 0; i < 9; i++) 
    {
    dr = dt.NewRow();dr[0] = i;
    dr[1] = "Item " + i.ToString();
    dr[2] = 1.23 * (i + 1);dt.Rows.Add(dr);
    }DataView dv = new DataView(dt);
    return dv;
    }void Page_Load(Object sender, EventArgs e) 
    {if (!IsPostBack) 
    {
    // Load this data only once.
    ItemsGrid.DataSource= CreateDataSource();
    ItemsGrid.DataBind();
    ItemsGrid2.DataSource= CreateDataSource();
    ItemsGrid2.DataBind();
    }
    }
    private void DataGrid1_ItemDataBound(object sender,System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if( e.Item.ItemType == ListItemType.Item || e.Item.ItemType ==  ListItemType.AlternatingItem )
    {
    if(e.Item.Cells[1].Text=="Item 2" ||e.Item.Cells[1].Text=="Item 6")
    e.Item.Attributes.Add("bgcolor","red");
    }
    }
    </script> 
    <body> 
    <form runat=server>
    <asp:DataGrid id="ItemsGrid"
    BorderColor="black"
    BorderWidth="1"
    CellPadding="3"
    AutoGenerateColumns="false"
    runat="server"
    OnItemDataBound="DataGrid1_ItemDataBound"
    >
    <HeaderStyle BackColor="#00aaaa">
    </HeaderStyle> 
    <Columns>
    <asp:TemplateColumn HeaderText="选择">
    <ItemTemplate>
    <input type="checkbox" runat="server" id="chkSelect"/>
    </ItemTemplate>
    </asp:TemplateColumn>
    <asp:BoundColumn DataField="StringValue" HeaderText="StringValue"></asp:BoundColumn>
    </Columns></asp:DataGrid> <asp:DataGrid id="ItemsGrid2"
    BorderColor="black"
    BorderWidth="1"
    CellPadding="3"
    AutoGenerateColumns="true"
    runat="server"
    OnItemDataBound="DataGrid1_ItemDataBound"
    ></asp:DataGrid> 
    </form>
    </body>
    </html>
      

  7.   

    private void DataGrid1_ItemDataBound(object sender,System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if( e.Item.ItemType == ListItemType.Item || e.Item.ItemType ==  ListItemType.AlternatingItem )
    {
    if(e.Item.Cells[1].Text=="A")
    e.Item.Attributes.Add("bgcolor","red");
    }
    }