当前位置:  开发笔记 > 后端 > 正文

有选择地将css应用于gridview中的一行

如何解决《有选择地将css应用于gridview中的一行》经验,为你挑选了2个好方法。

我正在寻找一种方法来有选择地将CSS类应用于GridView基于数据绑定项的属性的各个行.

例如:

GridView的数据源是一个通用列表,SummaryItemsSummaryItem具有属性ShouldHighlight.当ShouldHighlight == true关联行的CSS应设置为highlighted

有任何想法吗?



1> balexandre..:

很容易

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        DataRowView drv = e.Row.DataItem as DataRowView;
        if (drv["ShouldHighlight"].ToString().ToLower() == "true")
            e.Row.CssClass = "highlighted";
    }
}

如果您使用DataTable作为DataSource,上面的代码将起作用

改成:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        myClass drv = (myClass)e.Row.DataItem;
        if (drv.ShouldHighlight)
            e.Row.CssClass = "highlighted";
    }
}

仅用于上面使用泛型时的示例:

public class myClass
{ 
    public Boolean ShouldHighlight
    { get; set; }
}

如果你正在使用泛型(列表,字典等)

记住:

e.Row.dataItem

总是返回填充行的整个对象,因此从这里可以很容易地操作网页中数据的外观.

您应该使用RowDataBound事件,该事件将在数据附加到行对象后触发但尚未在页面中写入HTML代码,这样您就可以检查ShouldHighlight值(我转换为String因为我不知道类型,如果你知道它是一个布尔值,你可以改变它.

此代码运行速度比megakemp代码快得多,因为您没有创建List对象并填充每行的整个数据源...

PS 看一下这个网站,你可以使用GridView对象为你的项目找到几个教程



2> TheZenker..:

您要记住的一件事是在RowCreated或RowDataBound事件处理程序中设置Row.CssClass属性将覆盖您在网格级别应用的任何默认样式.GridView使您可以通过以下属性轻松访问行样式:

gvGrid.AlternatingRowStyle.CssClass = ALTROW_CSSCLASS
gvGrid.RowStyle.CssClass = ROW_CSSCLASS

但是,当您将CssClass值分配给特定行时,在这种情况下您需要,分配会在网格级别上覆盖任何顶级分配.作业不会像我们希望的那样"级联".因此,如果您想要保留顶级类赋值并且还要在您自己的更具体的层上进行分层,那么您需要检查rowState以查看您正在处理的行类型并相应地连接您的类名

If(item.ShouldHighlight)
 {
    If(e.Row.RowState == DataControlRowState.Alternate)
    {
        e.Row.CssClass = String.Format("{0} {1}", "highlight", ALTROW_CSSCLASS)
    }
    else
    {
        e.Row.CssClass = String.Format("{0} {1}", "highlight", ROW_CSSCLASS)
    }


}

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有