怎样禁止dataGridview更新,允许插入

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样禁止dataGridview更新,允许插入相关的知识,希望对你有一定的参考价值。

允许插入新纪录和删除,不允许修改已有纪录
可以说的明白些吗?

把表设成只读好像连插入都不行。
急,在线等。
5楼。
插入和修改是直接在dataGirdview上的。删除是一个按钮和右键都可以。

我不知道你的添加和删除是怎么做的,是右键菜单还是按钮?不论是什么,你把修改功能去掉不久行了?
你既然用到dataGridview,那么你一定用了 DataSet 吧?
那么你就找到 SqlCommandBuilder builder(对象名) =
new SqlCommandBuilder(dataAdapter(对象名));
dataAdapter.Update(dataSet(对象名),"表名");
删掉他们就可以了。
SqlCommandBuilder用于自动生成Sql语句,dataAdapter对象的Update()方法用于修改数据库。
参考技术A 添加修改是一体的,除非你用代码控制,把添加行false了,然后代码控制添加Row.Add,就可以了。然后把列表设成只读ReadOnly = true; 参考技术B 把修改那个功能去掉不就得了。。 参考技术C 把列表设成只读4, ReadOnly = true; 参考技术D 在gridview中不添加修改功能不就行了吗?

每次更新 datagridview 时如何创建历史日志

【中文标题】每次更新 datagridview 时如何创建历史日志【英文标题】:How can I create a history log every time I update a datagridview 【发布时间】:2021-11-25 03:27:53 【问题描述】:

我有一个表单,我可以在其中更新 datagridview 中的数据,它会保存一个日志。

我的问题是每次我保存数据时都会在数据网格中插入所有数据。

我将如何保存仅在我对 datagridview 进行更改时才会保存的数据?这可能吗?

这是我的 UI 快照:

还有我保存数据的代码:

//this is the formula for inserting history logs
MySqlConnection conn = new MySqlConnection("Data Source=" + clsSQLcon.sqlServerName + ";port=" + clsSQLcon.sqlPort + ";Initial Catalog =" + clsSQLcon.sqlDatabaseName + ";user id =" + clsSQLcon.sqlUserName + ";password =" + clsSQLcon.sqlPassword + "");
conn.Open();
string query = "INSERT INTO tblhistorylogs(DATE_UPDATED,NAME,LOGS) VALUES" +
    "(@Date,@Name,@HistoryLogs)";
MySqlCommand command = new MySqlCommand(query, conn);

for (int i = 0; i < dataGridView1.Rows.Count; i++)

    if (txtPRSSearch.Text.Length <= 3)
     
    else
    
        command.Parameters.AddWithValue("@Date", DateTime.Today.ToString("yyyy-MM-dd"));
        command.Parameters.AddWithValue("@Name", "Updated by: " + LoginForm.SetValueForText1 +"\n("+ cbxPRSctrl.Text + "-" + txtPRSSearch.Text +")");
        command.Parameters.AddWithValue("@HistoryLogs",
      
          "STATUS: " + Convert.ToString(dataGridView1.Rows[i].Cells[0].Value) + "\n" +
          "ITEM NAME: " + Convert.ToString(dataGridView1.Rows[i].Cells[5].Value) + "\n" +
          "DATE RECEIVED: " + Convert.ToString(dataGridView2.Rows[i].Cells[0].Value) + "\n" +
          "RECEIVED BY: " + Convert.ToString(dataGridView3.Rows[i].Cells[0].Value) + "\n" +
          "SUPPLIER: " + Convert.ToString(dataGridView3.Rows[i].Cells[1].Value) + "\n" +
          "PO/PCF/PIS: " + Convert.ToString(dataGridView3.Rows[i].Cells[2].Value) + "\n" +
          "UNIT COST " + Convert.ToString(dataGridView3.Rows[i].Cells[3].Value) + "\n" +
          "AMOUNT: " + Convert.ToString(dataGridView3.Rows[i].Cells[4].Value) + "\n" +
          "REF/CV/JV: " + Convert.ToString(dataGridView3.Rows[i].Cells[5].Value) + "\n" +
          "DATEPAID: " + Convert.ToString(dataGridView3.Rows[i].Cells[6].Value) + "\n" +
          "INCHARGE: " + Convert.ToString(dataGridView3.Rows[i].Cells[7].Value) + "\n" +
          "TARGET DATE: " + Convert.ToString(dataGridView3.Rows[i].Cells[8].Value));

        command.ExecuteNonQuery();
        command.Parameters.Clear();
            

【问题讨论】:

这能回答你的问题吗? DataGridView Event to Catch When Cell Value Has Been Changed by User。或者,或者,如果您要绑定到DataTable,这是否回答了您的问题? Return only the changed rows of a datagridview? 【参考方案1】:

一个简单的方法是使用DataGridView DataSource 的DataTable 和DataTable 方法GetChanges。

要查看示例,请参阅以下 GitHub repository。核心代码在下面class 使用扩展方法。请注意,提供的代码不是直接插入和使用的,而是为您提供适应您的任务的基础知识。

【讨论】:

以上是关于怎样禁止dataGridview更新,允许插入的主要内容,如果未能解决你的问题,请参考以下文章

C# 在更新或插入另一个表单时刷新 DataGridView

C# - 尝试通过 Form2 上的按钮获取 SQL 插入以更新 Form1 上的 dataGridView

C#中怎样将dataGridView中的新添加的一行数据添加到数据库中

c# datagridview1 指定某列数据居中

datagridview怎样添加空白行到尾部(最后一行),而不是最后一行的前面插入

C#怎样把access数据库中的数据刷新一下显示在DataGridView中