我有一个gridview,可以显示棒球队的统计数据。这是一个标准的体育统计网格 - 行显示每个玩家的统计数据,列显示每个玩家的特定统计数据。
到目前为止很容易。但我想要做的是每个 stat列的Max或Min(团队领导)的样式(突出显示或加粗)。例如,玩家A可能只引导一个或两个类别,因此我们无法设置整个行的样式。如果球员A只是在三振出局中领先球队,我只想设定他所拥有的三振出局次数(仅限该单位)。
处理此问题的最佳方法是什么?使SQL Server完成所有工作并生效,对每个播放器的每个统计数据进行排名,有效地使列数加倍(例如col:AB,col:ABRank)。或者我让gridview的rowdatabound事件处理这个?
如果我选择后者,我想我会在绑定之前从数据表中获取每个统计类别的Max(例如将它们存储在局部变量中)然后在rowdatabound上,如果它们匹配值,则应用样式。
答案 0 :(得分:2)
你已经回答了自己的问题,这就是我给你的答案。
或者我是否允许rowdatabound事件 gridview处理这个吗?
如果我选择了后者,我想我会的 得到每个统计的最大值 以前数据表中的类别 绑定(例如将它们存储在本地 变量)然后在rowdatabound上,如果 他们匹配价值,应用风格。
答案 1 :(得分:2)
你没有提到一个选项。您可以使用javascript客户端进行突出显示。在表格上运行应该相当简单,突出显示列中的最高值。
答案 2 :(得分:2)
根据您的操作,您可能会绑定一定数量的列。
在绑定之前,我会在你的DataSource上使用LINQ,对于你想要最大的每种类型,例如:
// create a global variable to hold the data
int _maxHomeRuns = 0;
// Then before you bind the datasource, find out the max of each stat
_maxHomeRuns = baseballStats.Max(i => i.HomeRuns); // get the max
// Then in your template columns Label control DataBinding method
if ((int)(Eval("HomeRuns")) == _maxHomeRuns)
{
// Assign the style you want
((Label)(sender)).CssClass = "MaxCellStyle";
}
我不会使用RowDataBinding
,在控制级别OnDataBinding
执行此操作,因此您将检查专门用于控件,因此您不必搜索行上的控件。