DataGridView编辑模式

时间:2011-01-19 18:52:58

标签: .net datagridview

目前我有一个.NET DataGridView显示来自我的来源DataTable dt的数据。我希望能够对其进行编辑,以便当用户点击进入单元格并进行更改时,更改最终会存储回DataTable源。到目前为止,我已经尝试过:

dataGridView1.DataSource = dt;
dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;

但这不允许我编辑表格中的任何内容。有什么建议吗?

感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

我在一个项目中试过这个,下面的工作就像一个魅力:

public Form1()
{
    InitializeComponent();

    var dt = new DataTable();
    dt.Columns.Add("Int", typeof(int));
    dt.Columns.Add("Double", typeof(double));

    var random = new Random();

    for(var i = 0; i < 50; i++)
    {
        dt.Rows.Add(random.Next(), random.NextDouble());
    }

    dataGridView1.DataSource = dt;
    dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;
}

DGV没什么特别的。我刚把它放在工具箱的表格上。我没有预先创建DGV列。

我能为您的情况建议的最好方法是尝试在主要解决方案之外重现问题。尝试复制你在其他地方所做的事情,希望你能找到让你绊倒的一件事。如果在数据绑定之前创建自己的DGV列,请确保它们未设置为ReadOnly

答案 1 :(得分:1)

您是否希望将其保存到DataTable(运行应用程序的计算机的内存中)或服务器?

如果你的意思是DataTable,并且DataGridView绑定到表,它会自动发生,你只是没有看到它。您可以通过在DataGridView的GetChanges()事件中的数据表上调用RowLeave来查看此内容。

但是,我猜你真的意味着你想把它保存回源数据库。如果我猜对了,请看这篇文章:http://social.msdn.microsoft.com/Forums/en/vbide/thread/5f8741dc-5874-46e7-8665-6bda3674bafd

修改 - 根据评论添加

有几件事需要检查和尝试。

首先,只是为了好玩,而不是EditOnEnter,将EditMode设置为EditOnKeystroke。

还要检查以确保.Enabled属性设置为true,并且它不在.Enabled设置为false的另一个控件(例如Panel)中。

另外,请确保将ReadOnly属性设置为false。

此外,CanFocus需要设置为true。

我列出的大部分内容都是默认设置,因此请在“属性”窗格中查找粗体设置,这表示它们不是默认属性值。

答案 2 :(得分:0)

如果您使用的是设计器,则在配置列时会出现三个复选框。 允许添加 允许编辑 允许删除 我认为你没有检查过它们,因为Grid只显示给你。

另外,请检查您是否已将列标记为只读。

相关问题