【问题标题】:Having difficulty editing datagridview. How do i make it editable?难以编辑 datagridview。我如何使它可编辑?
【发布时间】:2016-08-11 13:51:42
【问题描述】:

我已经将一个组合框链接到 datagridview 并且它运行良好。但是,我需要使 datagridview 可编辑,但我无法在 datagridview 中输入任何内容。 ReadOnly 为 off/false。 我尝试在 datagridview 的值时使用 cellvaluechanged 事件,但首先我需要让单元格发生变化。如何通过 linq to entity 使 datagridview 可编辑?

private void editDataGridView_CellContentClick_1(object sender, DataGridViewCellEventArgs e)
{
    editDataGridView.CellValueChanged 
      += new DataGridViewCellEventHandler(editDataGridView_CellValueChanged);
}

private void editDataGridView_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{ 
     MessageBox.Show("Cell Changed"); 
}

这是我链接组合框和数据网格视图的地方

private void cboeCID_SelectedIndexChanged_1(object sender, EventArgs e)
{
     var CID = Convert.ToInt32(cboeCID.Text);

     using (Entities2 db = new Entities2())
     {
         var course = from c in db.Student_Course where c.CID == CID select new {
               SID = c.SID,
                Mark = c.Mark};
                editDataGridView.DataSource = course.ToList();
       }
 }

【问题讨论】:

  • sn-p 代码不起作用
  • 你有specified an EditMode吗?
  • @stuartd EditonKeystroke,但即使 datagridview 的 readonly 属性设置为 false,我什至无法输入单元格。
  • 您不应该在每个 cellcontentclick 上添加另一个事件处理程序。在 Form 构造函数上设置一次!而且你不应该使用 MessageBox 进行调试,因为它会混淆焦点。使用 Console.WriteLine 代替!话虽如此,我不确定为什么您不能写入单元格;您可以将 DataSource 设置为 null 并测试更改是否重要..?
  • @TaW 数据源。可能就是这样!有办法解决吗?

标签: c# entity-framework linq datagridview


【解决方案1】:

找到here:问题在于您选择的anonymous type

匿名类型包含一个或多个公共只读属性。

所以只读被转移到结果集中,然后进入 DGV..

你需要选择一个,即使它只是一个用于此目的的假人..

class dummy
{
    public integer SID { get; set; }
    public integer Mark { get; set; }

    public dummy() { }
    public dummy(integer w, integer p) { SID = s;  Mark = m; }
}

插入您自己的数据类型!选择一个不那么乏味的名字;-)

现在您可以更改选择..:

     var course = from c in db.Student_Course where c.CID == CID select new dummy
     {
         SID = c.SID,
         Mark = c.Mark
      };

     editDataGridView.DataSource = course.ToList();

..瞧:DataGridView 是可编辑的..

【讨论】:

  • 编辑不会保存回数据库,我尝试使用 db.SaveChanges() 但这不起作用。
  • 我在没有 EF 的情况下进行了测试; SID 是 pk 吗?所有非空字段都在船上吗?在正常的 ADO 中,它通常涉及准备更新命令;这里我不知道。你能检查数据的状态吗? - 保存数据的问题是另一个新问题(经过一些研究)。
  • 因为我不使用 EF,你能告诉我var course 的结果类型是什么吗? (将光标悬停在它上面,智能感知就会知道!)
  • 是的,但是 var 是哪种类型? EnumerableRowCollection<dummy>?
  • 接口类型
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-07
  • 1970-01-01
  • 2016-09-25
  • 1970-01-01
  • 2021-11-15
相关资源
最近更新 更多