代码之家  ›  专栏  ›  技术社区  ›  Tom Carter

计算字段上的ASP.NET网格视图排序

  •  1
  • Tom Carter  · 技术社区  · 16 年前

    我有一个数据绑定的网格视图。但是,我有一列中的值来自代码隐藏中的计算,它显示在模板字段中。

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

    4 回复  |  直到 16 年前
        1
  •  7
  •   Stephen Wrighton    16 年前

    将初始返回的数据放入数据集或数据表中。为计算字段向数据表中添加新列。将这些数据进行必要的计算,并将结果放入所述计算字段中。

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

    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语句中执行计算,请重新:

    SELECT Col1, Col2, Col3, Col1+Col2+Col3 AS LineTotal FROM Table; 
    
        2
  •  0
  •   wulimaster    16 年前

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

        3
  •  0
  •   Frank Schwieterman    16 年前

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

        4
  •  0
  •   Anonymous    16 年前

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