0

我在 C# WinForms 中有一个 dataGridView,它显示数据库中表中的自定义项,并且我有用于在该表中插入新行的文本框和按钮。当我点击按钮时,文本框的文本将被插入到表格中,我希望插入后,dataGridview 可以重新加载新项目并显示它。我使用dataGridView1.Update();dataGridView1.Refresh();不工作。

我知道 dataGridView 可以插入新项目,但我想以我的方式插入项目。这是我点击事件的代码:

private void button1_Click(object sender, EventArgs e)
        {
            String connString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\bank.mdf;Integrated Security=True;User Instance=True";
            SqlConnection conn = new SqlConnection(connString);
            SqlCommand cmd = new SqlCommand();
            String cmdText = "insert into marja (ayatollah) values(@n)";
            cmd.CommandText = cmdText;
            cmd.Parameters.AddWithValue("@n", textBox4.Text);

            cmd.Connection = conn;
            conn.Open();
            if (cmd.ExecuteNonQuery() > 0)
            {
                dataGridView1.DataSource = marjaBindingSource;
                textBox4.Text = "آیت الله ";
            }

            else
                MessageBox.Show("Error");
            conn.Close();
        }
4

3 回答 3

0

那么你将不得不使用DataBind方法来重新加载datagridview.

可以说DataGridView1ID你的然后在你的声明datagridview之后使用下面的代码行。Insert

DataGridView1.DataSource = yourDataSource;  

RefreshUpdate方法不会在这里达到您的目的。

所有人都阅读此链接以获取更多信息。

你能把你的代码改成这样吗:

private void button1_Click(object sender, EventArgs e)
{
    int rowsAffected = 0;
    String connString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\bank.mdf;Integrated Security=True;User Instance=True";
    SqlConnection conn = new SqlConnection(connString);
    SqlCommand cmd = new SqlCommand();
    String cmdText = "insert into marja (ayatollah) values(@n)";
    cmd.CommandText = cmdText;
    cmd.Parameters.AddWithValue("@n", textBox4.Text);

    cmd.Connection = conn;
    conn.Open();
    rowsAffected = cmd.ExecuteNonQuery();
    conn.Close();

    if (rowsAffected > 0)
    {
         dataGridView1.DataSource = marjaBindingSource;
         textBox4.Text = "آیت الله ";
    }

    else
    {
         MessageBox.Show("Error");
    }
}
于 2013-03-16T07:14:21.277 回答
0

您应该尝试数据绑定,并可能将您的数据填充到ObservableCollection中,您不需要手动调用更新,一切都是自动完成的。

另请参阅这篇文章:重新加载列表框内容

于 2013-03-16T07:14:49.763 回答
0
this.marjaTableAdapter.FillBy(this.bankDataSet10.marja);

这是我的答案

于 2013-03-16T09:18:21.443 回答