grideview从数据库读取数据,行数是不固定的,我求某一列的和,比如这一列是“Menoy”,该怎么做呢?
另外我想找到grideview中的某个特定的单元格,比如从左到右,从上到下,最后一列与最后一行的交叉的那个单元格,该怎么做呢?
另外我想找到grideview中的某个特定的单元格,比如从左到右,从上到下,最后一列与最后一行的交叉的那个单元格,该怎么做呢?
解决方案 »
- 点击导航链接后怎么换背景?
- 请教大家一个奇怪问题??
- 请教高手:htmlfile对象(控件)如何进行超时(timeout)设置?
- ASP.NET三层架构中的数据交流问题
- ajax传值乱码的问题
- 多个页面向一个页面传值怎么判断
- 请教大家一个很难的问题高手来啊!
- 急~~~~treeview动态生成树的问题~~~~~~各位大侠帮忙啊,在线等啊~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 我用vs.net2002自带的水晶报表,可是调试是时候,没有进入程序她就出现这样的错误!见内容为什么?
- 一个弹出窗口的问题?
- asp.net 页面为什么会出现转译字符
- 简单 问题 下班结帖!!(2010-11-1)
2. 可以用DataTable的compute计算. Object o = dt.Compute("SUM(字段)","");3. 循环各个gridviewrow,累加计算
2. GridView1.Rows[n].Cells[n]
/// <summary>
/// 数据源为DataTable的GridView列汇总器
/// </summary>
public class GridViewTotaller
{
#region Variables
private GridView gridView;
public string DispHTMLFormat = "{0}"; #endregion #region Constructor
public GridViewTotaller(GridView gridView)
{
this.gridView = gridView;
}
#endregion /// <summary>
/// 汇总Grid某一列的数据
/// </summary>
/// <param name="totalFld">要统计的列名</param>
/// <param name="cellIndex">要统计列的index</param>
/// <param name="format">格式,默认值为空</param>
public void Total<T>(String totalFld, Int32 cellIndex, String format) where T : struct, IFormattable
{
DataTable dt = (DataTable)gridView.DataSource;
if (dt.Rows.Count <= 0) return;
Object oValue = dt.Compute(String.Format("sum({0})", totalFld), "");
T value = (T)(oValue == DBNull.Value ? 0 : Convert.ChangeType(oValue, typeof(T)));
gridView.ShowFooter = true;
gridView.FooterRow.HorizontalAlign = HorizontalAlign.Right;
gridView.FooterRow.Cells[cellIndex].Text += String.Format(DispHTMLFormat, String.Format("{0}", value.ToString(format, null)));
} public void Total<T>(String totalFld, Int32 cellIndex) where T : struct, IFormattable
{
Total<T>(totalFld, cellIndex, null);
} /// <summary>
/// 汇总Grid某一列的数据
/// </summary>
/// <param name="grd">gridView</param>
/// <param name="totalFld">要汇总的字段</param>
/// <param name="cellIndex">要显示的单元格索引</param>
public static void TotalInfo(GridView grd, String totalFld, Int32 cellIndex)
{
GridViewTotaller totaller = new GridViewTotaller(grd);
totaller.Total<Decimal>(totalFld, cellIndex, "N2");
}
}
Rows[0].Cells.Count-1