【问题标题】:Getting sum in the gridview data without database在没有数据库的情况下获取gridview数据的总和
【发布时间】:2016-02-11 07:08:25
【问题描述】:

我有一个网格视图,用户只会向它添加数据。但数据并未保存到数据库中。

我想要发生的是能够计算并显示所有数据量的总和。

这是网格视图

我想把总和放到文本框中。所以,我所做的是

代码隐藏:

 void gettotal()
    {
        foreach (GridViewRow row in GridView1.Rows)
        {
            float GTotal = 0f;
            for (int i = 0; i < GridView1.Rows.Count; i++)
            {
                con.Open();
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = con;
                string Amount = GridView1.Rows[row.RowIndex].Cells[4].Text;
                GTotal += Convert.ToSingle(Amount);
            }
            txtSubTotal.Text = GTotal.ToString();
        }
    }

    protected void AddProduct_Click(object sender, EventArgs e)
    {
        GetPO();
        gettotal();
        AddNewRecordRowToGrid();
    }

无论何时点击Button Add Product,它都会添加到gridview中。

我尝试了代码并得到一个错误

输入字符串的格式不正确。

第 375 行:GTotal += Convert.ToSingle(Amount);

编辑 #1

附加:我正在尝试获取点击 btn 添加产品时的金额。这对我找到金额的价值有用吗?

所以我把代码改成了

string Amount = GridView1.Rows[row.RowIndex].Cells[4].Text;
//string Amount = GridView1.Rows[row.RowIndex].Cells[4].Text;
GTotal += string.IsNullOrEmpty(Amount) ? 0 : Convert.ToInt16(Amount);`

还是说空

【问题讨论】:

  • 出现错误时的金额是多少?
  • 你确定这就是它所说的吗?因为在您的代码中有Convert.ToInt16,但您的错误在Convert.ToSingle
  • 您的代码中的GTotal += Convert.ToSingle 在哪里?如果您在代码中的任何地方使用它,请确保您传递了正确的CultureInfo。 Convert.ToSingle 是文化敏感的。
  • Convert.ToInt32Convert.ToSingle 我的错误出现了同样的错误
  • @Adil 哦,是的.. 所以我将代码更改为 String Amount = (GridView1.Rows[i].FindControl("Amount") as Label).Text; 那里出现错误说 null 的金额

标签: c# asp.net gridview


【解决方案1】:

我认为如果单元格值为null / empty,则会引发异常输入字符串格式不正确。

你必须通过检查条件来避免这个问题。

试试这个:

string Amount = GridView1.Rows[row.RowIndex].Cells[4].Text;
GTotal += string.IsNullOrEmpty(Amount) ? 0 : Convert.ToInt16(Amount);

如果您希望使用任何非数字输入默认为 0:

int i;
string Amount = GridView1.Rows[row.RowIndex].Cells[4].Text;
if (!int.TryParse(Amount, out i)) i = 0;
GTotal += i;

编辑 #1

您需要确保Rows and cells 可用且不为空/空。

您可能需要在此处检查其他条件。根据您在 Grid 中的数据可用性。

if(GridView1.Rows[row.RowIndex] != null && GridView1.Rows[row.RowIndex].Cells[4] != null)
{
    // Put the two lines of code here.
}

以上代码未经测试。相应地修改if condition

【讨论】:

  • 金额为空:(我是否使用了错误的代码来查看值?
  • 不,您只需要替换两行代码即可完成这项工作。 :) 酷。
  • 我在单击 btn addproduct 时放置代码(因此数据将添加到 gridview)并且应该查看总和。可以吗?
  • 它确实只得到一个值。这是我的网格视图中的最后一个值。细胞数量呼呼呼
  • 我希望它包含用户将插入的所有数据的总和
猜你喜欢
  • 2018-09-05
  • 2013-10-10
  • 2020-04-13
  • 2011-08-31
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多