ASP.NET GridView在计算字段上排序

时间:2008-12-24 13:52:12

标签: asp.net gridview

我有一个DataBound GridView。但是我有一列,其值来自后面代码中的计算 - 它显示在TemplateField中。

如何根据此计算值对网格进行排序?

4 个答案:

答案 0 :(得分:7)

将您的初始返回数据放入DATASET或DATATABLE。为您计算的字段添加到DATATABLE新列。走过那些数据做必要的计算,并将结果放入所说的计算字段。

基于数据表创建新视图,并按计算字段对视图进行排序。将网格绑定到数据视图。

Dim DT as DataTable 
DT = GetDataTableFromDataBaseMethod()
DT.Columns.Add(New DataColumn("CalculatedColumnName"))
For each row as DataRow in DT.Rows
    row("CalculatedColumnName") = PerformCalculations(row)
Next 

Dim view as New DataView 
view.DataTable =dt 
View.Sort = "CalculatedColumnName DESC"

datagrid1.Datasource = view
datagrid1.Databind 

或者,如果可能,在SQL语句中执行计算:re:

SELECT Col1, Col2, Col3, Col1+Col2+Col3 AS LineTotal FROM Table; 

答案 1 :(得分:0)

一种可能的解决方案是填充数据表而不是绑定网格。然后使用数据视图,将排序集设置为计算列,并将其绑定到后面代码中的网格。

答案 2 :(得分:0)

另一个解决方案是考虑将计算列添加到数据库表本身。这样做的好处是可以在加载行的其余部分的同一个SQL表达式中返回计算列,但遗憾的是需要更改数据库模式。

答案 3 :(得分:0)

请注意,向数据表添加列会将所有行标记为已更新,因此在保存回数据库时,它会尝试更新所有记录。