Visual C#DataGridView编辑;设置了所有可能的编辑选项;不会编辑

Visual C#DataGridView编辑;设置了所有可能的编辑选项;不会编辑,c#,mysql,datagridview,phpmyadmin,C#,Mysql,Datagridview,Phpmyadmin,我花了大约三个星期的时间试图找到这方面的信息,但没有成功。 与编辑相关的DGV设置: DGV上的readonly为false 编辑模式是在DGV上击键 代码如下: 然而,当试图编辑时,什么也没有发生,框只是从选择变成颜色;鼠标不会变为识别文本,击键什么也不做 这应该做什么(至少在我的头脑中,根据图坦卡蒙的说法): 叫桌子。 填充DGV。 允许通过击键对选定字段进行编辑。问题在于您正在将BindingSource对象的数据源设置为SQLDataReader对象。这是一个只读对象 DataRead

我花了大约三个星期的时间试图找到这方面的信息,但没有成功。 与编辑相关的DGV设置: DGV上的readonly为false 编辑模式是在DGV上击键

代码如下:

然而,当试图编辑时,什么也没有发生,框只是从选择变成颜色;鼠标不会变为识别文本,击键什么也不做

这应该做什么(至少在我的头脑中,根据图坦卡蒙的说法): 叫桌子。 填充DGV。
允许通过击键对选定字段进行编辑。

问题在于您正在将BindingSource对象的数据源设置为SQLDataReader对象。这是一个只读对象

DataReader仅限于只读和转发。就是, 用户无法修改从数据库检索到的信息 DataReader,DataReader也不能以随机顺序检索记录。 相反,DataReader仅限于访问中的记录 从第一条记录到最后一条记录的顺序,一次一条记录 时间。”

您应该改为使用DataAdapter并填充DataTable

然后使用DataTable作为BindingSource的数据源

Alternativley,你可以用你的数据阅读器打勾如下:-

  using(SqlDataReader reader = command.ExecuteReader())
            {
                DataTable data = new DataTable();
                data.Load(reader);

            }

希望这有帮助。

像下面这样更改您的编码…它将帮助您

string query = "SELECT * FROM catalog";
using (MySqlConnection con  = new MySqlConnection (connectionString))
{
 con.Open();
 using (MySqlDataAdapter dataAdapter = new MySqlDataAdapter(query , con))
 {
  DataSet ds = new DataSet();
  dataAdapter.Fill(ds);
  dataGridView1.DataSource = ds.Tables[0];
 }
 con.Close();
}

绑定源不使其为只读,DataReader对象为只读的事实使其不可编辑。您的代码可以工作,但无需删除BindingSource。谢谢,此代码和上面提供的信息现在可以编辑DGV。