我有网格视图,用户只会向其添加数据。但是数据没有保存到数据库中。
我想要发生的是能够计算和发现显示所有数据量的总和。
我希望总和进入文本框。所以,我做的是
背后的代码:
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
答案 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
。