在没有数据库

时间:2016-02-11 07:08:26

标签: c# asp.net gridview

我有网格视图,用户只会向其添加数据。但是数据没有保存到数据库中。

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

以下是网格视图Grid View

我希望总和进入文本框。所以,我做的是

背后的代码:

 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);`

仍然说NULL

1 个答案:

答案 0 :(得分:0)

我认为如果Cell值为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