测试DataGridView中的最后一个空白对象

时间:2015-04-14 12:41:01

标签: c# xml winforms datagridview

早上好;

我正在使用DataSet将xml导入DataGridView,在DataGridView中对空白对象值进行一些奇怪的行为测试。我刚刚开始研究在WinForm中使用DataGridView。我使用AuthorsDataSet演练

创建了非常简单的DataGridView

https://msdn.microsoft.com/en-us/library/ekw4dh3f.aspx

然后我非常轻微地操作代码来读取我的xml文件而不是AuthorsDataSet。效果很好。

然后我尝试将一列中的所有项目相加。我发现了这一点,它让我明白了。

how I can show the sum of in a datagridview column?

这让我来到这里

    public string sum()
    {

        double sum = 0;
        for (int i = 0; i < dataGridView1.Rows.Count; ++i)
        {
            var test = dataGridView1.Rows[i].Cells[6].Value; //Can not use
                //double here as I get the FromatException whether 
                //testing for `==null` or `==""`

            //double test = Convert.ToDouble(dataGridView1.Rows[i].Cells[6].Value); THIS THROWS FormatException

            if (test == "")
            {
                sum += 0;
            }
            else
            {
                sum += Convert.ToDouble(test);
            }
        }
        return sum.ToString();
    }

如果我使用double test...if (test == null)我得到FormatException was unhandled最终我的作品,但我担心将来会出现其他错误。我担心的是,我测试的xml对象可能没有任何价值,我不知道该去哪里。我应该为它赋值0,然后在用户提供输入时将其写入(在这种情况下,它是一个简单的启动/停止计时器。)

如果我只使用sum += Convert.ToDouble(dataGridView1.Rows[i].Cells[6].Value);而不测试空白xml对象,则会收到FormatException错误。

我如何错误地测试这个。示例xml条目如下:

<?xml version="1.0" encoding="utf-8"?>
<Form1>

  <Name Key="4/13/2015 3:22:05 PM">
    <Date>4/13/2015</Date>
    <JobNum>01det</JobNum>
    <RevNum>00000</RevNum>
    <Task>testing</Task>
    <Start>12:30 PM</Start>
    <End>03:22 PM</End>
    <TotalTime>9828063</TotalTime>
  </Name>
  <Name Key="4/14/2015 6:36:06 AM">
    <Date>4/14/2015</Date>
    <JobNum>01det</JobNum>
    <RevNum>00000</RevNum>
    <Task>testing</Task>
    <Start>06:36 AM</Start>
    <End></End> \\THIS ONE WILL ALMOST ALWAYS BE BLANK DURING REGULAR BUSINESS HOURS
    <TotalTime></TotalTime>
  </Name>
</Form1>

请提前告知并提前谢谢。我很感激!!

1 个答案:

答案 0 :(得分:2)

试试这个。

 public string sum()
    {
        double sum = 0;
        string test;
        for (int i = 0; i < dataGridView1.Rows.Count; ++i)
        {
            if (dataGridView1.Rows[i].Cells[6].Value != null)
            {
                test = dataGridView1.Rows[i].Cells[6].Value.ToString();

                if (test != "")
                {
                    sum += double.Parse(test);
                }
            }                
        }
        return sum.ToString();
    }