2010-05-20 3 views
1

Я застрял в ситуации, когда мне нужно отключить несколько столбцов в каждой строке, за исключением недавно добавленной строки.Создание уникальных столбцов UltraWinGrid только для чтения

То есть, у меня есть 10 столбцов в сетке, и первые 3 столбца являются привязкой к базе данных и поступают из базы данных как отключенные или только для чтения. Остальные редактируются.

Если я добавляю новую строку, то все столбцы новой строки должны быть включены до ее сохранения.

У меня нет никакого DataKey или первичного ключа для моей существующей строки или новой строки. Я должен проверить некоторое логическое значение, например IsNewRow.

В моем текущем сценарии я использую этот блок кода:

Private Sub dgTimeSheet_InitializeRow(ByVal sender As Object, ByVal e As Infragistics.Win.UltraWinGrid.InitializeRowEventArgs) Handles dgTimeSheet.InitializeRow 

    ''if either column key is Project, Class or Milestone 

    '' Activation.NoEdit = Disable and Activation.AllowEdit = Enable 

    Dim index As Integer = e.Row.Index 

    If e.Row.IsAddRow Then 

     dgTimeSheet.Rows(index).Cells(PROJECT).Activation = Activation.AllowEdit 

     dgTimeSheet.Rows(index).Cells(SERVICE_ISSUE_CLASS).Activation = Activation.AllowEdit 

     dgTimeSheet.Rows(index).Cells(MILESTONE).Activation = Activation.AllowEdit 

    Else 

     dgTimeSheet.Rows(index).Cells(PROJECT).Activation = Activation.NoEdit 

     dgTimeSheet.Rows(index).Cells(SERVICE_ISSUE_CLASS).Activation = Activation.NoEdit 

     dgTimeSheet.Rows(index).Cells(MILESTONE).Activation = Activation.NoEdit 


    End If 

    CheckRows() 

End Sub 

Проблема заключается в том, что если я нажимаю на инвалидах/только для чтения строк, а затем вновь добавленные строки также отключаются, что я не хотеть.

ответ

1

Я борюсь с аналогичной проблемой на C#, так что это рыбалка в темноте ... Возможно ли в вашем случае добавить оператор IgnoreRowColActivation = true, чтобы строки не возвращались?

0

Этот пример создают только для чтения столбцов для интерфейса клиент использует

Пример для строки с тремя колонками. Задайте два столбца как для чтения, а третье - как редактируемые для пользователя.

три столбца, определенные в конструкторе: System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn1; System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn2; System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn3;

Набор колонок 1 & 2 непосредственно

this.dataGridViewTextBoxColumn1.ReadOnly = true 
this.dataGridViewTextBoxColumn2.ReadOnly = true 

Вы все еще можете обновить все столбцы в исходном коде. Клиент сможет редактировать третий столбец.

Смежные вопросы