如何在C#中更改gridview行颜色/asp.net

yeotifhr  于 2023-05-30  发布在  .NET
关注(0)|答案(2)|浏览(290)

我想根据网格视图单元格或列值更改网格视图行/单元格的背景颜色。我有一个网格视图asp.net(WebForms),其中一列是quantity(int)。根据这个值,每一行背景颜色应该是动态变化的。

7cjasjjr

7cjasjjr1#

//In asp.net (WebForms) gridview <asp:GridView create an event 

 OnRowDataBound="GridView1_RowDataBound"

// then go to c# OnRowDataBound event and write

       if (e.Row.RowType == DataControlRowType.DataRow)
        {
            Label myQuantity= (e.Row.FindControl("myQuantity") as Label);
            int Quantity= Convert.ToInt32(myQuantity.Text); // you can change datatype

            if(Quantity >5 ) //you can put your require value 
             {
               e.Row.BackColor = System.Drawing.Color.AliceBlue;
             }
            
        }
b1uwtaje

b1uwtaje2#

好了,让我们构建一个gridview,但是使用一个bootstrap表类。结果将是一个HTML引导类表。
因此,我们有这样标记:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
    DataKeyNames="ID" Width="50%">
    <Columns>
        <asp:BoundField DataField="FirstName" HeaderText="FirstName" />
        <asp:BoundField DataField="LastName" HeaderText="LastName" />
        <asp:BoundField DataField="City" HeaderText="City" />
        <asp:BoundField DataField="HotelName" HeaderText="HotelName" />
        <asp:BoundField DataField="Description" HeaderText="Description" />
        <asp:TemplateField>
            <ItemTemplate>
                <asp:CheckBox ID="chkActive" runat="server"
                    Checked='<%# Eval("Active") %>' />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

它看起来像这样:

这是一张看起来很丑的table。
因此,让我们添加一个bootstap“table”类,就像魔术一样,我们得到了一个漂亮的格式化引导表。
所以,gv标记现在是这样的:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
    DataKeyNames="ID" Width="50%"
    CssClass="table table-hover"

其余的保持不变!!!
现在的结果是一个很好的bootstrap格式的表。
我们得到这个:

注意,得到的gridview表是多么的好-它现在是一个 Bootstrap 格式的表,并且如上所示,甚至重新调整大小也非常好!!!
好了,现在我们已经有了一个漂亮的格式化引导表,下一个目标是改变每行的颜色。
当列处于“活动”状态时,将每行的格式设置为 Azure 。
正如建议的那样,常用的方法是使用行数据绑定事件。
所以,我们现在有这个:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            DataRowView gData = (DataRowView)e.Row.DataItem;
            if ((bool)gData["Active"]) 
                e.Row.BackColor = System.Drawing.Color.LightSteelBlue;
        }
    }

结果是这样的:

我想是为了好玩和开心吧?
好吧,你可以给这行分配一个css属性,甚至一个类。
然后这个:

if ((bool)gData["Active"])
    e.Row.Style.Add("background-color", "LightSteelBlue");

结果将与第一个示例代码的效果相同。

相关问题