0

我正在尝试["CellNumber"]使用 if 条件检查列值是否为空。即使列单元格值不为空,它也会通过消息框进行提示,而不是退出foreach loop并更新数据。

    private void btnUpdate_Click(object sender, EventArgs e)
    {
        da = new SqlDataAdapter("select * from Measurement", con);
        SqlCommandBuilder cb = new SqlCommandBuilder(da);
        foreach (DataGridViewRow row in dgv.Rows)
        {
            if (Convert.ToString(row.Cells["CellNumber"].Value) == "")
            {
                MessageBox.Show("Please enter cellnumber", "Missing Information");
                return;
            }
        }
        try
        {
            da.Update(ds, "Measurement");
        }
        catch (DBConcurrencyException ex)
        {
            MessageBox.Show(ex.Message);
        }
4

5 回答 5

1

请通过执行检查您在 datagridview 中的行数

 DataGridView. If myDataGridView.Rows.Count == 0

如果等于 0 则为空

于 2013-02-08T14:05:38.087 回答
0
if (string.IsNullOrEmpty(row.Cells["CellNumber"].Value))
{ Your Code  }
于 2013-02-08T14:09:28.080 回答
0

您使用字符串“CellNumber”,它不应该是一个int吗?

if (Convert.ToString(row.Cells["CellNumber"].Value) == "")

于 2013-02-08T14:07:01.440 回答
0

试试这个方法

if (row.Cells["CellNumber"].Value == null || string.IsNullOrEmpty(row.Cells["CellNumber"].Value.ToString()))
{
   //rest
}

在验证之前调用dgv.CurrentRow.DataGridView.EndEdit();以保存所有单元格中的更改:)

private void btnUpdate_Click(object sender, EventArgs e)
{
    dgv.CurrentRow.DataGridView.EndEdit();
    dgv.EndEdit();
    ....
于 2013-02-08T14:12:42.707 回答
0

尝试使用.EditedFormattedValue

        if (string.IsNullOrWhiteSpace(row.Cells["CellNumber"].EditedFormattedValue.ToString()))
        {
            MessageBox.Show("Please enter cellnumber", "Missing Information");
            return;
        }
于 2013-02-08T14:18:21.353 回答