0

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

5 回答 5

0

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

做这个

如果(dataGridView2.Rows.Count > 0){

}

仅当行数超过 0 时才会执行条件。

于 2013-10-02T07:48:34.317 回答
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
        {

        }                      
    }   
于 2013-10-02T13:30:41.063 回答
0

检查这个

dataGridView2.Rows.Count > 0

处于某种状态

于 2013-10-02T07:25:39.213 回答
0

第一组

dataGridView2.AllowUserToAddRows = false

或者

每次更新时检查。

dataGridView2.Rows.Count > 0 

或者

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

//在这里做你的更新

于 2013-10-02T07:43:44.470 回答
0

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

于 2013-10-02T07:23:04.240 回答