【发布时间】:2018-01-09 13:30:45
【问题描述】:
我有一个数据网格视图,我可以在其中不可见或隐藏一些行,在这个过程中,我应该得到第 6 列单元格的总和(仅来自可见行)我在上下文菜单项中编写的代码单击事件给我一个例外说:“输入字符串的格式不正确。”在这行代码中:
count += Convert.ToInt32(addSellItemsDgv.Rows[row.Index].Cells[6].Value.ToString());
我的上下文菜单项点击事件代码:
private void toolStripMenuItem2_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow row in addSellItemsDgv.SelectedRows)
{
CurrencyManager currencyManager1 = (CurrencyManager)BindingContext[addSellItemsDgv.DataSource];
currencyManager1.SuspendBinding();
addSellItemsDgv.CurrentCell = null;
row.Visible = false;
}
addSellItemsDgv.Refresh();
int count = 0;
if (addSellItemsDgv.Rows.GetRowCount(DataGridViewElementStates.Visible) > 0)
{
foreach (DataGridViewRow row in addSellItemsDgv.Rows)
{
if (row.Visible == true)
{
count += Convert.ToInt32(addSellItemsDgv.Rows[row.Index].Cells[6].Value.ToString());
}
}
addSellTtlCostLbl.Text = count.ToString();
}
else
{
addSellTtlCostLbl.Text = "0";
}
}
【问题讨论】:
-
您可能有一个空白行。在尝试将值转换为
int32之前,请检查Cell.Value是否为“null”。 -
@peeebeee 它有一个值,所有单元格都有值
-
在调试器中运行,然后在遇到异常时检查您尝试转换的值。
-
除非您先拥有数据,否则无法将数据绑定到数据网格。为什么不从用于填充数据网格的数据中计算您需要的值,而不是填充数据网格然后尝试从中读取?
标签: c# winforms datagridview sum