Devexpress C # XtraGrid Проблемы с редактированием отдельной ячейки - PullRequest
2 голосов
/ 01 октября 2011

Я собираюсь вырваться из-за чего-то, что, вероятно, очень просто.

Это использует XtraGrid.

Давайте предположим, что у меня есть два столбца и число строк x,в одном столбце есть только флажок, который я установил с помощью свойства columnedit, а в другом - значение.У меня есть текстовое поле, установленное для редактирования этого второго значения.

Как я могу настроить это так, чтобы, если я установлю флажок для этой строки, он позволит редактировать число в поле значения далеек этому?У меня для allowit установлено значение true для столбца флажка, но если я установлю для allowit значение true для 2-го столбца, скажем, в обработчике события checkbox флажок изменен, это позволит редактировать все ячейки в этом столбце.У меня нет других свойств, таких как readonly set или что-то в этом роде.

Как я могу отличить одну ячейку в этом столбце и активировать редактор, оставляя остальные только для чтения на основе этого флажка в той же строке?У меня есть чувство, что оно включает использование ShowingEditor и CustomRowCellEdit, но я не уверен, как это настроить.

Может ли кто-нибудь провести меня через то, что мне нужно сделать, чтобы выполнить это?Какие настройки мне нужно установить для свойств readonly / allowit для этого столбца, и что мне нужно было бы добавить в эти методы ShowingEditor / CustomRowCellEdit, чтобы сделать это?Я действительно новичок в этом, так что это, вероятно, очень простой вопрос, но мне нужна помощь!Несколько примеров кода для C #, чтобы определить, какая ячейка выбрана, помогли бы мне, но мне просто нужно выяснить это.Спасибо !!!

1 Ответ

2 голосов
/ 04 октября 2011

Да, вы правы, вы должны справиться с этим, реализовав ShowingEditor Событие

Этот код для демонстрационных частей:

Первый Я связываю gridview1 с RandomClass

public class RandomClass
{
    public bool AllowEdit { get; set; }
    public string Text { get; set; }

    public randomClass()
    {
        this.AllowEdit = true;
        Text = "Text1";
    }
}

затем реализуйте событие ShowingEditor. Каждый раз, когда gridview1 пытается открыть редактор для second column, он проверяет, проверен ли столбец AllowEdit или нет, и предпринимает действия в соответствии с ним

private void gridView1_ShowingEditor(object sender, CancelEventArgs e)
{
     if (gridView1.FocusedColumn.FieldName == "Text"
          && !IsAllowingEdit(gridView1, gridView1.FocusedRowHandle))
     {
       e.Cancel = true;
     }
}

private bool IsAllowingEdit(DevExpress.XtraGrid.Views.Grid.GridView view,int row)
{
     try
     {
        bool val = Convert.ToBoolean(view.GetRowCellValue(row, "AllowEdit"));
        return val;
     }
     catch
     {
         return false;
     }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...