DataGridView如何检查单元格是否为空?

时间:2017-10-04 18:15:34

标签: c# winforms datagridview

我正在开发一个程序,其中包含一个表单中的DataGridView,我正在从XML文件将数据导入此DataGridView。 在这个DataGridView中,我可以添加,编辑和删除这些数据,并在单击按钮时将此更改保存到XML文件中。 (有两列。) 我的问题是,我需要在单击按钮时检查是否有任何单元格为空,在这种情况下,显示一个MessageBox来指示这一点,并且不要让我保存此更改。

我尝试过循环等等,但找不到任何有用的东西。 希望可以有人帮帮我!谢谢

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;

namespace Sullair
{
public partial class IPs : Form
{
    public IPs()
    {
        InitializeComponent();
    }

    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {

    }

    private void IPs_Load(object sender, EventArgs e)
    {
        try
        {
            DataSet ds = new DataSet();
            ds.ReadXml(@"C:\Users\Administrador\source\repos\Sullair\schema.xml");
            dataGridView1.DataSource = ds.Tables[0];
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }

    private void Save()
    {
        DataTable db = (DataTable)dataGridView1.DataSource;
        db.WriteXml(@"C:\Users\Administrador\source\repos\Sullair\schema.xml");
    }

    private void btnSave_Click(object sender, EventArgs e)
    {
        Save();   
    }

}
}

4 个答案:

答案 0 :(得分:0)

只需在表格单元格上执行嵌套循环,如下所示:

private bool AreAllCellsFilled(DataTable t)
{
    if (t == null || t.Rows.Count == 0 || t.Columns.Count == 0) return true;

    for (int rowIdx = 0; rowIdx < t.Rows.Count; rowIdx++)
    {
        for (int colIdx = 0; colIdx < t.Columns.Count; colIdx++)
        {
            if (t.Rows[rowIdx][colIdx] == DBNull.Value)
            {
                MessageBox.Show($"Cell {colIdx + 1} of row {rowIdx + 1} is empty");
                return false;
            }
        }
    }

    return true;
}

答案 1 :(得分:0)

foreach(DataGridViewRow row in dataGridView1.Rows)
{
    foreach(DataGridViewCell cell in row.Cells)
    {
        if(string.IsNullOrEmpty(cell.Value as string))
           {
           //cell is empty
            }
            else
             {
               //cell is not empty
            }
    }
}

答案 2 :(得分:0)

//当有空值显示消息显示时,以此为例(否) //如果没有空值打开文件对话框

>>> sequenceResize(sequence, 5)
[1, 3, 5, 7, 9]
>>> sequenceResize(sequence, 19)
[1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10]

答案 3 :(得分:0)

这对我有用。检查特定单元格是否为空或为空。

    if (string.IsNullOrEmpty(dataGridView_A0.Rows[0].Cells[0].Value as string))
    {
         MessageBox.Show("Null or Empty", "Results");
    }