【问题标题】:How to Refresh the Datagridview using c#.net如何使用 c#.net 刷新 Datagridview
【发布时间】:2020-02-05 18:08:13
【问题描述】:

我在 c#.net 中创建了一个简单的 crud。添加后记录记录将显示在 datagridview 本身上。但我做不到。到目前为止我尝试过的代码附在下面。

代码

sql = "insert into student(stname,course,fee)values(@stname,@course,@fee)";
con.Open();
cmd = new SqlCommand(sql, con);
cmd.Parameters.AddWithValue("@stname", stname);
cmd.Parameters.AddWithValue("@course", course);
cmd.Parameters.AddWithValue("@fee",stfee);
load();

dataGridView1.Update();
dataGridView1.Refresh();

数据加载到 datagridview

public void load()
{
   try
   {
       string sql;
       sql = "select * from student";
       cmd = new SqlCommand(sql, con);
       con.Open();
       dr = cmd.ExecuteReader();
       dee = new SqlDataAdapter(sql, con);

       while (dr.Read())
       {
           dataGridView1.Rows.Add(dr[0], dr[1], dr[2], dr[3]);

       }
       con.Close();
   }
   catch(Exception ex)
   {

   }
   finally
   {
     con.Close();
     cmd.Dispose();      
  }    
}

【问题讨论】:

  • 快速笔记:第一个代码块,你没有执行任何东西,为什么要打开连接和命令?使用using 语句处理不再需要的对象。不要使用AddWithValue,使用Add 并指定数据类型。具体来说,您需要执行第一个代码块来插入数据,然后然后执行另一个来获取它。
  • 永远不要使用空接。这就是我称之为 try/squelch 的反模式。没有什么比发现错误更糟糕的了,然后像什么都没发生一样对待它。

标签: c# sql-server datagridview sqldatareader sqlcommand


【解决方案1】:

我想你只需要执行查询,插入指令只打开连接!!!

 sql = "insert into student(stname,course,fee)values(@stname,@course,@fee)";
    con.Open();
    cmd = new SqlCommand(sql, con);
    cmd.Parameters.AddWithValue("@stname", stname);
    cmd.Parameters.AddWithValue("@course", course);
    cmd.Parameters.AddWithValue("@fee",stfee);

    **int isexist;
    isexist = Convert.ToInt32(sCommand.ExecuteScalar());
    if(isexist > 0)
    {...**

    load();

    dataGridView1.Update();
    dataGridView1.Refresh();

【讨论】:

  • 我试过上面那个先生。它没有用。添加记录后datagridview上没有显示记录。重启项目后只显示
  • 在数据库中,能找到表中的记录吗?跑完??
  • 你可以尝试使用BindingSource bSource = new BindingSource(); bSource.DataSource = 数据表; dataGridView1.DataSource = bSource;
【解决方案2】:

使用SqlDataAdapter

...
dee = new SqlDataAdapter(sql, con);
Dataset dataset = new Dataset();
dee.Fill(dataset);
dataGridView1.ItemSource = dataset.Tables[0];
..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-23
    • 2015-06-25
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    相关资源
    最近更新 更多