2010-05-20 22 views
1

Je suis bloqué dans une situation où je dois désactiver quelques colonnes dans chaque ligne, à l'exception de la ligne nouvellement ajoutée.Création d'infragistics Colonnes spécifiques UltraWinGrid Lecture seule

En d'autres termes, j'ai 10 colonnes dans la grille et les 3 premières colonnes sont databound et proviennent de la base de données en tant que désactivées ou en lecture seule. Le reste est modifiable.

Si j'ajoute une nouvelle ligne, toutes les colonnes de la nouvelle ligne doivent être activées jusqu'à ce qu'elle soit enregistrée.

Je n'ai aucune clé DataKey ou clé primaire pour ma ligne existante ou la nouvelle ligne. Je dois vérifier une valeur booléenne comme IsNewRow.

Dans mon scénario actuel, je me sers de ce bloc de code:

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 

Le problème est que si je clique sur les handicapés/en lecture seule des lignes, puis les nouvelles lignes ajoutées obtiennent également désactivé, que je ne suis pas vouloir.

Répondre

1

Je me bats avec un problème similaire en C#, donc c'est pêcher dans l'obscurité ... Est-il possible, dans votre cas, d'ajouter une instruction IgnoreRowColActivation = true pour empêcher les lignes de revenir en arrière?

0

Cet exemple ne lisent que des colonnes créent pour l'interface client utilise

Exemple pour une ligne avec trois colonnes. Définissez deux colonnes comme readonly et la troisième comme modifiable pour l'utilisateur.

les trois colonnes définies dans le concepteur: System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn1; System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn2; System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn3;

colonne set 1 & 2 directement

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

Vous pouvez toujours mettre à jour toutes les colonnes dans le code source. Le client ne pourra modifier que la troisième colonne.