Режим редактирования DataGridView - PullRequest
2 голосов
/ 19 января 2011

В настоящее время у меня .NET DataGridView отображаются данные из моего источника DataTable dt. Мне бы хотелось, чтобы его можно было редактировать так, чтобы, когда пользователь щелкает ячейку и вносит изменения, изменения в конечном итоге сохраняются обратно в источник DataTable. Пока я пробовал:

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

Но это не позволит мне что-либо редактировать в таблице. Есть предложения?

Спасибо за помощь.

Ответы [ 3 ]

3 голосов
/ 20 января 2011

Я попробовал это в проекте, и следующее работает как шарм:

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 голос
/ 19 января 2011

Вы хотите сохранить его в DataTable (в памяти на компьютере, на котором выполняется приложение) или на сервере?

Если вы имеете в виду DataTable, а DataGridView привязан к таблице,это происходит автоматически, вы просто этого не видите.Это можно увидеть, вызвав GetChanges () для данных в событии DataGridView RowLeave .

Тем не менее, я предполагаю, что вы ДЕЙСТВИТЕЛЬНО хотите сохранить еговернуться к исходной базе данных.если я угадаю, см. этот пост: http://social.msdn.microsoft.com/Forums/en/vbide/thread/5f8741dc-5874-46e7-8665-6bda3674bafd

Изменить - добавлено на основе комментариев

Есть несколько вещей, которые нужно проверить и попробовать.

Во-первых, просто для развлечения, вместо EditOnEnter, установите EditMode в EditOnKeystroke.

Также убедитесь, что для свойства .Enabled установлено значение true и что оно не находится внутри другого элемента управления (например, Panel), для которого .Enabled установлено значение false.

Кроме того, убедитесь, что для свойства ReadOnly установлено значение false.

Кроме того, для CanFocus должно быть установлено значение true.

Большинство из перечисленных мною параметров являются настройками по умолчанию,поэтому ищите настройки на панели Свойства, которые выделены жирным шрифтом и указывают, что они не являются значением свойства по умолчанию.

0 голосов
/ 20 января 2011

Если вы использовали дизайнер, есть три флажка, которые появляются при настройке столбцов.Разрешить Добавить Разрешить редактирование Разрешить Удалить Я предполагаю, что вы не проверили ни один из них, из-за чего таблица показывается вам только для чтения.

Также убедитесь, что вы пометили свои столбцы как только для чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...