当按0或1按下Delete按钮时,隐藏行而不是删除

时间:2019-07-11 08:01:58

标签: c# sql devexpress

我需要从Gridcontrol隐藏行,而不是从数据源中删除数据。

例如,当用户删除行时,将运行查询,该查询会将0值插入到我的表中,并显示包含值不为null的行的表。

我尝试使用下面的代码。但是我似乎无法运行它。

del = 1;

ColumnView view = gridControl1.FocusedView as ColumnView;
view.FocusedRowHandle = user_typeTableAdapter1.Insert_del(del);
view.SelectRow(view.FocusedRowHandle);

发生错误,尽管我插入了自定义查询,但我无法仅将del放在表适配器中。
这是正在发生的主要问题,在这件事上我没有太多帮助。

1 个答案:

答案 0 :(得分:0)

嗨,这个问题的答案如下。

实际上,我是在插入值而不是更新它。 我要做的就是运行查询并在调用delete时执行它。

  

请注意,这是为了演示在Devexpress中从gridView删除的数据

    private void Delete(){
 try
        {
            conn.Open();


            ColumnView view = gridControl1.FocusedView as ColumnView;

            int id = Convert.ToInt32(gridView1.GetDataRow(view.FocusedRowHandle)["product_id"]);
            string query = "UPDATE product SET del =@product_del where product_id= @id";
            int del = 1;
            SqlCommand sc = new SqlCommand(query, conn);

            sc.Parameters.AddWithValue("@product_del", del);
            sc.Parameters.AddWithValue("@id", id);
            sc.ExecuteScalar();
            sc.Dispose();
            conn.Close();
        }
}
  

现在为gridView零件

  private void gridControl1_ProcessGridKey(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.Delete)
            {

                DialogResult dialogResult = MessageBox.Show("Are you sure you want to delete this row, it will permanently delete the data", "Delete?", MessageBoxButtons.YesNo);

                if (dialogResult == DialogResult.Yes)
                {
                    ColumnView view = gridControl1.FocusedView as ColumnView;
                    view.CloseEditor();

                    {
                        Delete();
                        view.UpdateCurrentRow();

                        product_viewTableAdapter1.Fill(allDataSets1.Product_view);
                    }
                }

            }
        }
  

现在,每次用户删除行时,它将被隐藏而不是被删除。

实际上,这是用户的要求。所以我必须实现它。