日期:2014-05-17  浏览次数:20518 次

gridview新增列计算问题
请问各位大大,
小弟gridview控件绑定数据库有开始时间和结束时间两列。现在想编辑gridview模板新增一列,计算出结束时间和开始时间之差。请问如何实现?
请说的详细点,本人菜鸟。

------解决方案--------------------
在后台GridView的ItemDataBound事件中获取每行的DataItem,进行相关的差值计算后将值赋给模板列即可。
------解决方案--------------------

在需要的时候,比如点编辑时增加一列
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
     GridView1.EditIndex = e.NewEditIndex;
     BoundField field = new BoundField();                
     field.DataField = attribute.AttName;                
     field.HeaderText = attribute.AttName;                
     field.ItemStyle.CssClass = "gdv_pdmItemLeft";
     field.HeaderStyle.CssClass = "gdv_pdmItemLeft";
     //field.SortExpression = attribute.AttName; 
     GridView1.Columns.Add(field); //或者Insert
     BindData();
}

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if ((e.Row.RowState&DataControlRowState.Edit) == DataControlRowState.Edit && e.Row.RowType == DataControlRowType.DataRow)
    {            
        var dataRow = e.Row.DataItem as DataRowView; //或者实体类
          //取出要运算的列(或属性),得出时间差
          //绑定至新增的列
     }
}
在OnRowCancelingEdit和OnRowUpdated事件中移除相应的列

其实LZ完全可以加上一列,控制Visible即可