C# 如何动态更新DataGridView

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 如何动态更新DataGridView相关的知识,希望对你有一定的参考价值。

在DataGridView.datasource = 数据源 之后,数据源发生变化(添加记录)。如何在不重新使用DataGridView.datasource 的前提下 ,更新DataGridView的内容?

把dataGridView绑定动态dataTable就可以idongtai更新,举例修改数据代码:

        public static SqlConnection conn = null;
        public DataSet ds = null;
        public SqlDataAdapter sda = null;
        public String ExceptionStr = "";
        public void Openlink(String ser, String uid, String pwd, String data)
        
            conn = new SqlConnection();
            conn.ConnectionString = "Server=" + ser + ";uid=" + uid + ";pwd=" + pwd + ";database=" + data;
            try
            
                conn.Open();
            
            catch
            
                conn.Close();
            
        
        public void linkSQL(String sql)
        
            if (conn != null)
            
                ds = new DataSet();
                sda = new SqlDataAdapter();
                sda.SelectCommand = new SqlCommand(sql, conn);
                SqlCommandBuilder builder = new SqlCommandBuilder(sda);
                sda.Fill(ds);
            
        
        public void saveTable()
        
            if (ds != null)
            
                sda.Update(ds.Tables[0]);
                MessageBox.Show("操作已成功!", "保存数据", MessageBoxButtons.OK, MessageBoxIcon.Information);
            
        

使用ds.Tables[0]去填充dataGridView,就可以直接修改,然后触发saveTable保存

参考技术A 你的这个想法是错误的,在华丽的界面背后,隐藏的定然是方法的复用。同理,添加记录后,自动调用数据绑定模块,以同步刷新界面的内容。小到一个微型的MIS系统,大到Windows 都是这么做的。

如何在 Windows 窗体 C# 中单击按钮通过 DataGridView 更新数据库中的布尔字段

【中文标题】如何在 Windows 窗体 C# 中单击按钮通过 DataGridView 更新数据库中的布尔字段【英文标题】:How to update Boolean field in database through DataGridView by button click in Windows Form C# 【发布时间】:2017-05-14 01:54:02 【问题描述】:

DataGridView 显示我的数据库表中的值,考虑在此表中我有 8 个字段,我想通过 DataGridView 仅更新 2 个特定字段。在这 2 个字段中,一个字段是布尔类型 - 因此当数据库表中的值为“1”时,它在 DataGridView 中显示为复选框。因此,当我取消选中时,它应该使用值“0”更新数据库表,并且第二个字段是 int 类型。

在 DataGridView 中对这两个特定字段(单元格)进行更改后,我应该能够通过单击按钮(windows Form C#)更新数据库表。

谁能帮我处理这个编码部分或如何解决这个问题?

【问题讨论】:

【参考方案1】:

在您的按钮单击处理程序中,您需要执行以下操作:

        foreach (DataGridViewRow row in dg.Rows)
            
                if (Convert.ToBoolean(row["checkColumnName"].ToString())
                
                    // do checked thing
                
                else
                
                    // do unchecked thing
                
            

【讨论】:

【参考方案2】:

我能够以这种方式实现。希望这有帮助。 如果您有一个带有布尔/位字段的数据网格视图,并且想要根据您在数据网格视图中执行的选中/未选中事件更新数据库中的字段,则可以编写这段代码(在更新按钮单击事件中,更新布尔值的多条记录字段)

try
 
 foreach (DataGridViewRow row in dataGridView1.Rows) //looping through each records in datagridview
  
   //Update query
   strQuery = @"Update TableA Set ActiveInactive = @ActiveInactive --Boolean field
                Where Id = @Id ";

   cmd = new SqlCommand(strQuery, // provide sql connection string here));
   cmd.Parameters.AddWithValue("@Id", row.Cells["SystemIdentifier"].Value); //reading Id of a particular record
   cmd.Parameters.AddWithValue("@ActiveInactive", SqlDbType.Bit).Value = (Convert.ToBoolean(row.Cells["ActiveInactive"].Value) ? 1 : 0);
   //reading Boolean field of a particular record
   cmd.ExecuteNonQuery();
 
   MessageBox.Show("The records in the table has been updated.", "Information");


catch (Exception err)

    MessageBox.Show(err.Message.ToString(), "Error");

注意:我已经在表单加载中声明了必需的变量,并为 sql 连接字符串创建了一个类,该类在需要时被调用。

【讨论】:

以上是关于C# 如何动态更新DataGridView的主要内容,如果未能解决你的问题,请参考以下文章

c# 中如何在GroupBox控件中动态添加与移除控件

C# ASP.NET MVC:动态更新视图

C#获取列表机器人动态[关闭]

c#抓取动态网页中的数据

C#动态加载dll 时程序集的卸载问题

C# 开发的程序 如何 不让 使用者 看到 程序使用了啥dll