数据网格视图更新错误

本文关键字:更新 错误 视图 网格 数据网 数据 | 更新日期: 2023-09-27 18:33:30

在我的项目中,我编写了一段代码,如果 DGV 中没有数据,则不应对其进行更新,但即使当我单击空行时数据不存在默认情况下,然后在更新按钮上,它正在更新。请帮助我解决问题。我使用的代码是:

private void btnUpdate_Click(object sender, EventArgs e)
{
    if (dataGridView2.SelectedCells.Count == 0 )
    {
        MessageBox.Show("There are no any records to update");
    }
    else
    {
        SqlConnection con = Helper.getconnection();
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;
        con.Open();
        cmd.CommandType = CommandType.Text;
        string PrjName = txtPrjNmae.Text;
        string Description = txtPrjdescription.Text;
        DateTime Date = dateUpdate.Value;
        dateUpdate.Format = DateTimePickerFormat.Custom;
        dateUpdate.CustomFormat = "dd/MM/yy";
        string Size = txtPrjSize.Text;
        string Manager = txtPrjManager.Text;
        cmd.CommandText = "Update Projects set Description='" + Description + "', DateStarted='" + Date + "',TeamSize='" + Size + "',Manager='" + Manager + "' where ProjectName= '" + PrjName + "' ";
        MessageBox.Show("Project Details are updated");
        dataGridView2.Update();
        dataGridView2.Refresh();
        cmd.ExecuteNonQuery();
        con.Close();
    }
    BindData3();            
}  

数据网格视图更新错误

您可以通过settig AllowUserToAddRows = false

单击datagridview的最后一行来阻止用户添加新行

检查

这个

dataGridView2.Rows.Count > 0

在某种条件下

而不是检查if (dataGridView2.SelectedCells.Count == 0 )

这样做

if( dataGridView2.Rows.Count> 0){

}

这只会在行数超过 0 时执行条件。

第一组

dataGridView2.AllowUserToAddRows = false

每次更新时检查。

dataGridView2.Rows.Count > 0 

if(dataGridView2.Rows[e.RowIndex].Cells[e.ColumnIndex].EditedFormattedValue.ToString() != " ")

在这里进行更新

由于您允许用户首先通过不同的表单(而不是通过grdiview)插入行,hide默认情况下显示为AllowUserToAddRow属性设置为true的空行,因此您必须将此属性设置为false

仍然,如果您允许用户以其他方式将空行添加到网格中,则必须在用户单击更新按钮时对其进行验证。我能想到的一种方法是,

检查所选行是否具有mandatory cell value之一。假设项目名称是必需值,那么您可以编写如下逻辑,

selectedRow.Cells["ProjectName"]这里的项目名称是列名。

private void btnUpdate_Click(object sender, EventArgs e)
    {
       //Get the selected row
       DataGridViewRow selectedRow = dataGridView1.SelectedRows[0];
       //Check if Project Name cell in the selected row null or empty
       if (string.IsNullOrWhiteSpace(selectedRow.Cells["ProjectName"].Value.ToString()))
        {
            MessageBox.Show("There are no any records to update");
        }
        else
        {
        }                      
    }