如何对数据集中的列求和并在页脚中显示

时间:2013-10-17 14:15:08

标签: c# asp.net

这是我的代码:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        try
        {
            int IndexTypeID = 5;
            mobjORACLE = new DatabaseObjects.OracleDBCalls();
            DataSet dsetPortfolio = mobjORACLE.GetORACLEDataSet(IndexTypeID, "v_indextypeid", "cv_1", "fn_getportfolio");

            if (dsetPortfolio.Tables[0].Rows.Count > 0)
            {
                ViewState["gvPortfolio_DataSource"] = dsetPortfolio.Tables[0];
                gvPortfolio.DataSource = dsetPortfolio.Tables[0];
                gvPortfolio.DataBind();
                gvPortfolio.Visible = true;
                //dsetPortfolio.Tables[0].Rows[0]["cashreserve"];

                //ViewState["gvPortfolio_DataSource"] = gvPortfolio.DataSource;
                gvPortfolio.Attributes.Add("bordercolor", "#999966");
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
}

在gvPortfolio中,我得到了一个数据表,其中分配了一列名称。现在问题是,我需要总结列并在页脚中显示其结果。有人可以帮我摆脱这个。

2 个答案:

答案 0 :(得分:1)

您可以使用GridView.RowDataBound Event

摘自Microsoft文档:

  

在可以渲染GridView控件之前,控件中的每一行   必须绑定到数据源中的记录。 RowDataBound事件   在数据行(由GridViewRow对象表示)时引发   绑定到GridView控件中的数据。这使您可以提供   执行自定义例程的事件处理方法,例如   每次发生此事件时,修改绑定到行的数据的值   发生。

例如:

void gvPortfolio_RowDataBound(Object sender, GridViewRowEventArgs e)
{
    if(e.Row.RowType == DataControlRowType.Footer)
    {
        // Once you know you are in the footer row
        // the sender object is the GridView and you can get the datasource
        // loop thru the datatable adding up the values you want
        // For example: let say column 3 have the number
        // **** code is not tested - writing from memory ***
        int total = 0;
        int column = 3;
        foreach(DataRow row in (DataTable)(sender.DataSource).Rows)
        {
              if (!row.IsNull(column))
              {
                  // probably need more checking to make sure we have a valid integer
                  total += Convert.ToInt32(row[column]);
              }
        }

        e.Row.Cells[column].Text = total.ToString();
    }
}

答案 1 :(得分:0)

早上好,我相信这个previous post可以帮助你完成你想要完成的任务。