我已经可以删除数据库,并且想要在所选行(datagridview)中没有数据时显示错误,但它只在用户没有输入任何数据时才会显示(或者datagridview仍然为空行)。
private void DeleteDatabase(object sender, EventArgs e)
{
DataTable dt = (DataTable)dataGridView1.DataSource;
if (dt.Rows.Count > 0)
{
int rowNum = dataGridView1.CurrentRow.Index;
int id = Convert.ToInt32(dt.DefaultView[rowNum]["ID"]);
dt.DefaultView[rowNum].Delete();
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
string query = "DELETE FROM [Table] WHERE [ID] = @ID";
conn.Open();
using (OleDbCommand cmd = new OleDbCommand(query, conn))
{
cmd.Parameters.AddWithValue("@ID", id);
cmd.ExecuteNonQuery();
}
conn.Close();
}
}
else if (dt.Rows.Count <= 0)
{
if (choice.comboBox1.Text == "English")
{
System.Media.SoundPlayer sounds = new System.Media.SoundPlayer(@"C:\Windows\Media\Windows Exclamation.wav");
sounds.Play();
MessageBox.Show("There is no Data in the Selected Row!", "Error");
return;
}
}
if (choice.comboBox1.Text == "English")
{
System.Media.SoundPlayer sounds = new System.Media.SoundPlayer(@"C:\Windows\Media\Windows Exclamation.wav");
sounds.Play();
MessageBox.Show("Deleted Successfully!", "Deleted");
}
}
用户输入数据时,将其删除。数据删除成功,但是当用户在用户删除数据后再次单击“删除”按钮时,会出现类似标题的错误。
以下是截图(我将3张截图混合成1张图片):
----屏幕截图1(左图)说明-----:
当我在上午12:38运行程序时,当我点击“删除”按钮时,它就像上面的屏幕截图(1)一样(注意:它是正确的)。
-----屏幕截图2(中间图像)的描述-----:
程序仍然在上午12:39处于活动状态,一切正常(数据已添加,“删除”功能运行,因为所选行中有数据)。
----屏幕截图3(右图)说明-----:
程序仍然在上午12:40处于活动状态,之前的数据(见截图2)已被删除,并且所选行再次为空,当我单击“删除”按钮时,消息框未显示为截图1,但它给出了同样的错误。 (这是我面临的问题)。
注意:抱歉图片尺寸较小。
问题是:为什么当用户没有输入任何数据时,There is no data in the selected row
的消息框会在用户单击“删除”按钮时运行。但是当用户输入任何数据时(假设数据已经输入到第一行,并且选择将在第一行中为完整行)并单击“删除”按钮,它将删除所选行中的数据以及用户何时再次点击“删除”,它没有显示There is no data in the selected row
的消息框,但它显示错误,如标题。
答案 0 :(得分:1)
您不需要else if
。
尝试:
private void DeleteDatabase(object sender, EventArgs e)
{
DataTable dt = (DataTable)dataGridView1.DataSource;
if (dt.Rows.Count > 0)
{
int rowNum = dataGridView1.CurrentRow.Index;
int id = Convert.ToInt32(dt.DefaultView[rowNum]["ID"]);
dt.DefaultView[rowNum].Delete();
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
string query = "DELETE FROM [Table] WHERE [ID] = @ID";
conn.Open();
using (OleDbCommand cmd = new OleDbCommand(query, conn))
{
cmd.Parameters.AddWithValue("@ID", id);
cmd.ExecuteNonQuery();
}
conn.Close();
}
if (choice.comboBox1.Text == "English")
{
System.Media.SoundPlayer sounds = new System.Media.SoundPlayer(@"C:\Windows\Media\Windows Exclamation.wav");
sounds.Play();
MessageBox.Show("Deleted Successfully!", "Deleted");
}
}
else // count is 0
{
if (choice.comboBox1.Text == "English")
{
System.Media.SoundPlayer sounds = new System.Media.SoundPlayer(@"C:\Windows\Media\Windows Exclamation.wav");
sounds.Play();
MessageBox.Show("There is no Data in the Selected Row!", "Error");
// return; (this return is redundant as we're at the end of the method.)
}
}
}
您的问题也可能是您致电DeleteDatabase()