密码正确后从 DataGridView 中删除选定的行

Posted

技术标签:

【中文标题】密码正确后从 DataGridView 中删除选定的行【英文标题】:Delete selected rows from DataGridView after password is correct 【发布时间】:2015-07-02 08:02:16 【问题描述】:

在用户以另一种形式输入正确密码后,我想从连接到 Access 数据库的 datagridview 中删除选定的行。

我创建了一个方法,应该在密码正确后从表单 2 调用,但没有任何反应。

表格1:

public void DeleteSelectedRows()
        
            foreach (DataGridViewRow item in this.dataGridView1.SelectedRows)
            
                string ID = item.Cells[0].Value.ToString();
                conn_SN.Open();
                OleDbCommand command = new OleDbCommand();
                command.Connection = conn_SN;
                command.CommandText = "DELETE * FROM SN WHERE ID=" + ID;
                command.ExecuteNonQuery();
                conn_SN.Close();
            
        

这就是我从表格 2 中调用方法的方式:

private void btnOK_Click(object sender, EventArgs e)

    if(textbox.Text=="admin")
    
        Form1 form = Form1();
        form.DeleteSelectedRows();
    

有什么想法吗?

【问题讨论】:

ID 列的类型是什么?你调试过你的代码,看看会发生什么? 如果从 form1(datagridview 所在的位置)调用此代码,则可以完美运行。但是当我尝试从另一种形式调用它时,它不再起作用了。 你有异常吗?有什么错误吗? 不。什么都没有发生。 如何从第二个Form中调用函数?也许这可以帮助link 【参考方案1】:

您可以使用 Owner 属性。我只是给出一个示例代码。检查并修改为您的。

Form2 form2 = new Form2(dataGridView1);
        From2.Text = "some title text";
form2.Owner=this;
        form2.ShowDialog(this);

//And on form2 ; 
((Form1)this.Owner).YOURMETHODTODELETE(your parameter)

实现 YOURMETHODTODELETE 以从网格中删除行,然后刷新您的 grid1

【讨论】:

你试过我的解决方案了吗?请告诉我们你是如何解决这个问题的,这样它将成为世界上一些人的学习经验。如果我的堆栈溢出成员提供的答案对您有用,请接受并支持答案。如果答案没有用或有危险的错误,您也可以对答案投反对票。【参考方案2】:

我已经设法像这样调用该方法:

private void btnOK_Click(object sender, EventArgs e)

    if(textbox.Text=="admin")
    
    var form = Application.OpenForms.OfType<Meniu>().Single();
    form.DeleteSelectedRows();
    

【讨论】:

以上是关于密码正确后从 DataGridView 中删除选定的行的主要内容,如果未能解决你的问题,请参考以下文章

C# - 删除行后如何刷新 DataGridView

c# DataGridView 从选定行获取单元格值

在 Swift 中 segue 后从堆栈中删除(删除)视图/视图控制器的正确方法

从datagridview值中删除数据库中的行

c#在datagridview中删除指定行并更新到数据库

如何从select2多选中的选项列表中删除选定的选项并按选择的顺序显示选定的选项