使Infragistics UltraWinGrid的特定列成为只读

时间:2010-05-20 15:09:26

标签: vb.net infragistics 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

问题是如果我点击禁用/只读行,那么新添加的行也会被禁用,这是我不想要的。

2 个答案:

答案 0 :(得分:0)

我在C#中遇到类似的问题,所以这就是在黑暗中钓鱼......在你的情况下,是否可以添加一个IgnoreRowColActivation = true语句以防止行恢复?

答案 1 :(得分:0)

此示例为客户使用的界面创建只读列

包含三列的行的示例。将两列设置为只读,第三列可编辑为用户。

设计器中定义的三列:     System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn1;     System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn2;     System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn3;

设置第1列和第1列2直接

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

您仍然可以更新源代码中的所有列。客户只能编辑第三列。