使用var type datasource编辑datagrid winform中的单元格

时间:2012-01-16 19:42:44

标签: c# winforms datagridview edit

我正在尝试编辑数据网格中的一列,但它只是拒绝编辑。我已经设置了editmode,但它仍然没有响应。我唯一的意思是我绑定它的数据源。这是我的一些代码:

public partial class Example: Form
{
    DataTable edtable = new DataTable();
    DbHelper db;

    public Example()
    {
        InitializeComponent();
        db = new DbHelper("dbname", "dbid", "dbpassword");
        var cmd = db.GetCommand(
"Select ED.ID, ED.Name, ED.Code from EXAMPLETABLE ED Join (Select trim(code) as code, count(code) as codecount from exampletable group by trim(code)) X ON X.codecount > 1 and ED.Code like X.Code || '%'"
        ); 
        edtable = db.ExeGetDataTable(cmd);
        dataGridView1.DataSource = edtable;
    }               
}

当我运行我的应用程序时,我的数据网格填充了edtable,其中包含通过查询获得的内容。但是,我无法编辑其中的任何值。我点击了单元格,就好像这些值是只读的,即使我专门设置editmode进行编辑。

是因为我的数据源吗?如果是这样,我如何才能使我的值可编辑?

谢谢!

1 个答案:

答案 0 :(得分:0)

我想你已经在最后的评论中得到了它。我知道当你绑定到数据源时,如果绑定到只读属性,DataGridView中的单元格将是只读的,无论EditModeReadOnly是什么或其任何其他属性设置为。我没有绑定到您正在使用的DataTable个对象之一,但我知道当您绑定到具有{ get; }属性的类对象时,这些对象在网格中是只读的,而{ {1}}属性可编辑。

您是否希望在编辑网格中的值时,数据库中的值会更新?如果是这样,我确信你需要的东西不仅仅是一个简单的{ get; set; }语句填充的对象。如何攻击这将取决于您对网格中编辑的值的期望。