4

例如,我有一个显示棒球队统计数据的网格视图。这是一个标准的运动统计数据网格——行显示每个球员的统计数据,列显示每个球员的具体数据。

到目前为止很容易。但是我想做的是样式(突出显示或粗体)每个统计列的 Max 或 Min(团队负责人)。例如,玩家 A 可能只在一个或两个类别中领先,因此我们无法设置整行的样式。如果球员 A 只是在三振出局中带领球队,我只想设计他的三振出局数(仅限那个单元格)。

处理这个问题的最佳方法是什么?让 SQL Server 完成所有工作,实际上,对每个玩家的每个统计数据进行排名,有效地将列数加倍(例如 col: AB,col: ABRank)。还是让gridview的rowdatabound事件处理这个?

如果我选择后者,我想我会在绑定之前从数据表中获取每个统计类别的最大值(例如将它们存储在局部变量中),然后在 rowdatabound 上,如果它们匹配值,则应用样式。

4

3 回答 3

2

根据您在做什么,您可能绑定了一定数量的列。

我会在你的数据源上使用 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因此您将检查范围专门针对控件,因此您不必连续搜索控件。

于 2011-03-30T01:34:04.537 回答
2

你已经给出了你自己问题的答案,顺便说一句,我会给你的答案。

还是让gridview的rowdatabound事件处理这个?

如果我选择后者,我想我会在绑定之前从数据表中获取每个统计类别的最大值(例如将它们存储在局部变量中),然后在 rowdatabound 上,如果它们匹配值,则应用样式。

于 2011-03-30T00:15:30.220 回答
2

有一个你没有提到的选项。您可以使用 javascript 客户端进行突出显示。在表格上运行应该相当简单,突出显示列中的最高值。

于 2011-03-30T00:19:56.600 回答