数据网格视图更新错误
本文关键字:更新 错误 视图 网格 数据网 数据 | 更新日期: 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
{
}
}