Вложенный Gridview, прародитель, родитель, ребенок - PullRequest
0 голосов
/ 26 сентября 2018

помогите мне с этим, я хочу показать сумму баланса дочерних строк в столбце баланса родительской строки и сумму родительской строки в балансе в столбце баланса родительской строки,

Проблема в том, когда я использую цикл foreachдля получения баланса дублирует баланс на строках, которые не имеют баланса.

    protected void gvCategory_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        GridView gvType = (GridView)sender;
        string CategoryId = gvType.DataKeys[e.Row.RowIndex].Value.ToString();
        GridView GvAccount = e.Row.FindControl("gvType") as GridView;
        Label lblCurrentBalance = e.Row.FindControl("lblCCurrentBalance") as Label;
        GvAccount.DataSource = GetData(string.Format("select * from COA_Type where SubCategoryId='{0}'", CategoryId));
        GvAccount.DataBind();
        foreach (GridViewRow row in GvAccount.Rows)
        {
            if (row.Cells[3].Text != null)
            {
                NatureBalance += Convert.ToDecimal(((Label)row.Cells[3].FindControl("lblTCurrentBalance") as Label).Text);
            }
            lblCurrentBalance.Text = NatureBalance.ToString();
        }

     }
}

protected void gvType_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        GridView gvAccount = (GridView)sender;
        Label lblCurrentB = e.Row.FindControl("lblTCurrentBalance") as Label;
        string TypeId = gvAccount.DataKeys[e.Row.RowIndex].Value.ToString();
        GridView GvAccount = e.Row.FindControl("GvAccount") as GridView;
        DtAc = obj.GetClientAccounts(Convert.ToInt32(Session["ClientId"]), Convert.ToInt32(TypeId));
        CategoryBalance = DtAc.AsEnumerable().Sum(row => row.Field<decimal>("CurrentBalance"));
        lblCurrentB.Text = CategoryBalance.ToString();

        GvAccount.DataSource = DtAc;
        GvAccount.DataBind();
    }
}

1 Ответ

0 голосов
/ 28 сентября 2018

Вам нужно сбросить на ноль после того, как закончится граница строки каждого вложенного вида сетки.Перед сбросом на ноль, вы можете добавить сумму баланса в баланс родительской сетки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...