【问题标题】:How to create "Refresh" button for datagridview in C#?如何在 C# 中为 datagridview 创建“刷新”按钮?
【发布时间】:2019-08-30 23:10:14
【问题描述】:

我的问题是,当我创建一个在单击新拍卖或删除拍卖时刷新数据网格的按钮时,什么都没有发生,甚至出现一些语法错误。所以我需要:

刷新按钮,我通过XAML 制作的。 因此,当单击删除按钮时,我也需要删除一行。 但是,我的刷新不起作用。我需要从应用程序中注销并再次登录,以进行一些更改。我真的不知道该怎么做。

我会在下面提供一些图片,还有一些代码。

默认登录:

添加销售或删除销售,然后注销并重新登录:

我尝试制作一个自动更新的数据网格。我试着做这个按钮,我遇到了一些语法错误,我也尝试添加dgGridView.Items.Refresh(),也没有帮助。

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            BindDataGrid();
        }


        private void BindDataGrid()
        {

            SqlConnection conn = new SqlConnection();
            conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnString"].ToString();
            conn.Open();

            SqlCommand comm = new SqlCommand("SELECT * FROM AuctionTbl2", conn);
            DataSet ds = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter(comm);
            da.Fill(ds);
            dgGrid.ItemsSource = ds.Tables[0].DefaultView;
            dgGrid.Items.Refresh();

        }

        private void LogoutBtn_Click(object sender, RoutedEventArgs e)
        {
            MainWindowGuest mwg = new MainWindowGuest();
            mwg.Show();
            this.Close();
            MessageBox.Show("You have been logged out.");
        }

        private void DeleteBtn_Click(object sender, RoutedEventArgs e)
        {
            try
            {

                SqlConnection conn = new SqlConnection();
                conn.ConnectionString = 
              ConfigurationManager.ConnectionStrings["ConnString"].ToString();
                conn.Open();

                string query = "delete from AuctionTbl2";
                SqlCommand comm = new SqlCommand(query, conn);
                comm.ExecuteNonQuery();

                MessageBox.Show("Deleted");

                conn.Close();

            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void AddNew_Click(object sender, RoutedEventArgs e)
        {
            NewDeleteWindow newDeleteWindow = new NewDeleteWindow();
            newDeleteWindow.DataContext = new NewSaveButton();
            newDeleteWindow.ShowDialog();

        }
    }

}

我希望在添加或删除销售时进行刷新,无论是否使用刷新按钮,都没有关系。只是为了刷新这个网格。谢谢大家。

【问题讨论】:

  • 你要删除什么? “从 tblAuction 中删除”它不会删除记录。
  • 刷新按钮的代码在哪里?
  • @ZainArshad 我是初学者,我不太了解。我正在尝试这个。它以某种方式将其删除。当我按下“删除按钮”时,它会以某种方式从数据库中删除它,我不知道我应该得到什么?顺便说一句,我删除了刷新按钮,我认为它无论如何都帮不了我。
  • 刷新数据、数据源或查询而不是控件。但是您缺少表明该技术曾经有很大帮助的破布。

标签: c# sql


【解决方案1】:

您必须更新table,就像您在加载form 时更新t。在您的代码中替换这些方法:

private void DeleteBtn_Click(object sender, RoutedEventArgs e)
{
    try
    {
        SqlConnection conn = new SqlConnection();
        conn.ConnectionString = 
        ConfigurationManager.ConnectionStrings["ConnString"].ToString();
        conn.Open();

        string query = "delete from AuctionTbl2";  // i think you are not aaully deleting the record you want to delete
        SqlCommand comm = new SqlCommand(query, conn);
        comm.ExecuteNonQuery();
        MessageBox.Show("Deleted");
        conn.Close();
        BindDataGrid();
    }
    catch(Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

 private void AddNew_Click(object sender, RoutedEventArgs e)
{
    NewDeleteWindow newDeleteWindow = new NewDeleteWindow();
    newDeleteWindow.DataContext = new NewSaveButton();
    newDeleteWindow.ShowDialog();
    BindDataGrid();
}

更新:要删除您点击的sale,请按以下步骤操作:

  • 创建一个global variable“int IDdelete”。
  • 转到Designer.cs。
  • 点击dataGridView。
  • 您会在右侧看到Properties。
  • 点击events。
  • 滚动并找到CellClick 并双击它。
  • 它将创建一个像这样命名的方法private void dgGrid_CellClick(object sender, DataGridViewCellEventArgs e)
  • 现在将下面的代码粘贴到该方法中。
private void dgGrid_CellClick(object sender, DataGridViewCellEventArgs e)
{
   IDdelete = Convert.InTo32(dgGrid.Rows[e.RowIndex].Cells[0].Value);
}

Now, in your `SQL query` use this query.

   "DELETE from AuctionTbl2 where id=@IDelete";

【讨论】:

  • 是的,这行得通。至少要添加。当我选择一行并删除它时,它会删除所有行吗?
  • 什么删除所有记录?这就是我在代码中的评论中提到的
  • 您必须进行一些更改以获取所选行的Id,然后使用Where 子句
  • 我为 id 添加了 where 子句,如下所示:“从 AuctionTbl2 中删除,其中 id=@Id”。它说我需要声明一个标量变量?对不起,伙计们,我真的不知道,感谢您花时间为我解释。
  • 看到你必须创建一个变量IDdelete 并创建一个event,当你点击一条记录时,记录的ID 会保存在IDdelete 变量中并给出IDdelete 到 `where 子句。你明白了吗?
【解决方案2】:

在 Add 和 delete 块之后尝试此操作。

DataTable dt = dal.select();
dgGrid.DataSource = dt;

如果不能解决,请在 skype: vipinweb2

上 ping 我

【讨论】:

    猜你喜欢
    • 2015-09-03
    • 2013-05-11
    • 1970-01-01
    • 1970-01-01
    • 2016-06-29
    • 2018-01-30
    • 2015-04-06
    • 2017-01-17
    • 1970-01-01
    相关资源
    最近更新 更多