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