0

我遇到了 Gridview 计算的问题。场景是:

我有一个由存储过程返回的结果集绑定的 Gridview。我以编程方式在 gridview 中插入了一行文本框,以允许用户输入百分比。挑战是:如何根据百分比和网格视图中的值计算值,然后用计算值填充最后一行?

我的代码有点长,这里是一个快照。

下面的代码是绑定网格

            gv.DataSource = dt;
            gv.RowDataBound += new GridViewRowEventHandler(this.gv1_RowDataBound);



            gv.DataBind();
            gv.AutoGenerateColumns = false;
            gv.Style.Add("CssClass", "bodycopy");
            gv.CssClass = "bodycopy";

            gv.Style.Add("class", "border-right: #99ccff 1px solid; border-top: #000000 1px solid;border-left: #99ccff 1px solid; border-bottom: #99ccff 1px solid");
            gv.Attributes.Add("class", "border-right: #99ccff 1px solid; border-top: #000000 1px solid;border-left: #99ccff 1px solid; border-bottom: #99ccff 1px solid");
            gv.Height = Unit.Pixel(700);
            NewCell.Controls.Add(gv);
            NewCell.Style.Add("CssClass", "bodycopy");

            newRow.Cells.Add(NewCell);
            AssignCellCoordinatesIndividual(gv);

下面的功能是将网格添加到包含其他一些网格的表中。

private void AssignCellCoordinatesIndividual(GridView gv)
        {


            // Create IDs for Grid
            for (int i = 0; i < gv.Rows.Count; i++)
            {
                gv.Rows[i].ID = "r" + i; // Row ID
                for (int ii = 0; ii < gv.Rows[i].Cells.Count; ii++)
                {
                    gv.Rows[i].Cells[ii].ID = "c" + ii; // Cell ID

                    //gv.Rows[i].ControlStyle.

                    if ((int)Session["cellCount"] == 0)
                    {
                        if (gv.Rows[i].ID == "r25" || gv.Rows[i].ID == "r26" || gv.Rows[i].ID == "r27")
                        {
                            if (gv.Rows[i].Cells[ii].ID != "c0" && gv.Rows[i].Cells[ii].ID != "c1" )
                            {

                                User_Controls.txtPercent txtPerc = (User_Controls.txtPercent)LoadControl("~/User_Controls/txtPercent.ascx");
                                TextBox tbox = txtPerc.FindControl("txtPerc") as TextBox;


                                gv.Rows[i].Cells[ii].Controls.Add(txtPerc);
                                gv.Rows[i].Cells[ii].VerticalAlign = VerticalAlign.Middle;
                            }
                        }
                    }

                }
            }

        }

我创建了一个包含文本框的用户控件,它在上面的代码中动态添加到网格中,使用户能够输入百分比。现在我需要根据用户输入的百分比计算值并填充 gridview 中的最后一行。

这有什么意义吗?

4

1 回答 1

1

你会用 3 行百分比文本框做什么?每行百分比文本框占的百分比是多少?是上面所有数字总和的百分比吗?那你为什么还需要 2 行填充百分比文本框?

我了解您想要添加动态代码,因为存储过程中的行数可能会每次都发生变化。我已经简化了您的代码:

private void AssignCellCoordinatesIndividual(GridView gv)
    {
        // Create IDs for Grid
        for (int i = 0; i < gv.Rows.Count; i++)
        {
            gv.Rows[i].ID = "r" + i; // Row ID
            for (int ii = 0; ii < gv.Rows[i].Cells.Count; ii++)
            {
                gv.Rows[i].Cells[ii].ID = "c" + ii; // Cell ID

                int RowCount=gv.Rows.Count;

                if ((int)Session["cellCount"] == 0)
                {
                    if (i==RowCount+1 || i==RowCount+2 || i==RowCount+3)
                    {
                        if (ii != 0 && ii != 1)
                        {
                            User_Controls.txtPercent txtPerc = (User_Controls.txtPercent)LoadControl("~/User_Controls/txtPercent.ascx");
                            TextBox tbox = txtPerc.FindControl("txtPerc") as TextBox;


                            gv.Rows[i].Cells[ii].Controls.Add(txtPerc);
                            gv.Rows[i].Cells[ii].VerticalAlign = VerticalAlign.Middle;
                        }
                    }
                }

            }
        }

    }

为了让我完成代码,您能否为每一行编写公式,以便我可以编写 Calculate() 函数

于 2013-08-14T20:16:30.250 回答