我正在寻找一种方法来根据数据绑定项的属性选择性地将CSS类应用于GridView中的各个行。
例如。:
GridView的数据源是SummaryItems的一个通用列表,而SummaryItem具有一个属性ShouldHighlight。当ShouldHighlight == true时,应将相关行的CSS设置为突出显示
有任何想法吗?
解决方法
好简单
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值(我转换为字符串因为我不知道该类型,如果你知道它是一个布尔值,你可以改变它)。
这个代码比megakemp代码运行得更快,因为你不是创建一个List对象,并且填充了每一行的整个数据源…
附:使用look at this website,您可以使用GridView对象为您的项目找到几个教程