Datagridview更新错误

时间:2013-10-02 07:13:11

标签: c# winforms datagridview

在我的项目中,我编写了一个代码,如果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();            
}  

5 个答案:

答案 0 :(得分:0)

您可以通过settig datagridview点击AllowUserToAddRows = false的最后一行来阻止用户添加新行

答案 1 :(得分:0)

检查

dataGridView2.Rows.Count > 0

处于条件

答案 2 :(得分:0)

首先设置

dataGridView2.AllowUserToAddRows = false

每次更新时都要检查。

dataGridView2.Rows.Count > 0 

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

//你这里更新

答案 3 :(得分:0)

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

这样做

if(dataGridView2.Rows.Count> 0) {

}

只有当行数超过0时才会这样做。

答案 4 :(得分:0)

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

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

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

selectedRow.Cells["ProjectName"]此处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
        {

        }                      
    }