Заблокированный DataGridView. Linq это проблема? - PullRequest
0 голосов
/ 02 апреля 2010

Я получаю коллекцию от веб-сервиса:

var allPlaceHolders =
    from ph in new MyService().GetPlaceHolders()
    select new { Code = ph.Code, Name = ph.Name, Related = false };

dgPlaceHoldersAdd.DataSource = allPlaceHolders.ToList();

designer.cs:

this.dgPlaceHoldersAdd.ColumnHeadersHeightSizeMode =
    System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgPlaceHoldersAdd.Location = new System.Drawing.Point(3, 54);
this.dgPlaceHoldersAdd.Name = "dgPlaceHoldersAdd";
this.dgPlaceHoldersAdd.RowHeadersVisible = false;
this.dgPlaceHoldersAdd.Size = new System.Drawing.Size(286, 151);
this.dgPlaceHoldersAdd.TabIndex = 15;

Проблема в том, что я не могу изменить значение столбца checkBox.

Я включил AutoGeneratedColumns (в datagridview при запуске нет никакого столбца)

ДОБАВЛЕНО:

Это работает забавно: При первом клике идентификатор не меняет значение столбца флажка. На второй работе, а затем начать работать нормально.

Но ... когда я щелкнул по другой строке, затем по строке, прежде чем изменить его значения

Работает как радио-кнопка ...

 private void dgPlaceHoldersAdd_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e)
        {


            if (e.ColumnIndex == 2 && e.RowIndex > -1)
            {
                dgPlaceHoldersAdd.ReadOnly = false;
                dgPlaceHoldersAdd.CurrentRow.Cells[2].ReadOnly = false;

                 //dgPlaceHoldersAdd.EndEdit();

            }

        }

1 Ответ

3 голосов
/ 02 апреля 2010

Вы создаете анонимный объект в вашем запросе LINQ. Классы C #, созданные за обложкой, являются неизменяемыми (= только для чтения). Это означает, что ваш DataGridView не может изменить свое значение.

Попробуйте создать нестабильный объект и создать его из запроса LINQ.

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