这是我的代码:
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中,我得到了一个数据表,其中分配了一列名称。现在问题是,我需要总结列并在页脚中显示其结果。有人可以帮我摆脱这个。
答案 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可以帮助你完成你想要完成的任务。