未进入 UltraGrid 编辑模式

UltraGrid Edit Mode Is Not Being Entered

我在 9 月份问过 (好吧,老实说,完全相同),但出于某种原因,该问题的解决方案在我最近的事件中不起作用...

我的 UltraGrid 现在用于为订单中的每一行输入付款日期,并有一个 CheckBox 列将其标记为已付款。每个订单行付款后,订单进入下一阶段。

无论如何,当我创建的测试订单被标记为已交付并进入当前阶段(第 5 阶段 - 等待客户付款)时,我最初可以编辑付款日期和 CheckBox 列每个订单行。

但是,如果我将一个标记为已付款,而将另一个留空然后保存,则会出现以下问题。

我进入订单以将下一行标记为已付款。我可以输入付款日期,但无法将 CheckBox 设置为 True。事实上,在单步执行之后,单元格甚至没有进入 EditMode,因为 CellChange 事件没有被触发。

下面 CellChange 中的代码应该允许在输入日期后将 CheckBox 单元格设置为 True - 但是,它不会进入编辑模式。

有人能看出这是为什么吗?

 Try
        If e.Cell.Column.Key = "PaymentDate" Then
            e.Cell.Row.Cells("Customer_Paid").Activation = Activation.AllowEdit
            e.Cell.Row.Cells("Customer_Paid").IsInEditMode = True
        End If
    Catch ex As Exception
        errorLog(ex)
    End Try

    Try
        If e.Cell.Column.ToString = "Customer_Paid" Then
            Dim customerPaid As Boolean = Boolean.Parse(e.Cell.Text)

            If customerPaid = True Then
                If IsDBNull(ugProducts.ActiveRow.Cells("PaymentDate").Value) Then
                    MsgBox("Please enter a payment date", MsgBoxStyle.OkOnly, "Invalid Date")
                    e.Cell.Row.Cells("Customer_Paid").Value = False
                    ugProducts.ActiveRow.Appearance.BackColor = Color.White
                    ugProducts.ActiveRow.Cells("PaymentDate").Value = DBNull.Value
                Else
                    ugProducts.ActiveRow.Appearance.BackColor = Color.LightGreen
                    ugProducts.ActiveRow.Cells("Product_Price_Per").Appearance.BackColor = Color.LightGreen
                End If

                e.Cell.Row.Update()

            Else
                ugProducts.ActiveRow.Appearance.BackColor = Color.White
                ugProducts.ActiveRow.Cells("Product_Price_Per").Appearance.BackColor = Color.LightGreen
                ugProducts.ActiveRow.Cells("PaymentDate").Value = DBNull.Value
                Exit Sub
            End If
        Else

        End If

    Catch ex As Exception
        errorLog(ex)

    End Try

没有错误,只是没有进入EditMode状态。

上一个案例的解决方案是使用我这次添加的 Boolean.Parse 行,但这次没有成功。

不是问题本身的解决方法,而是我解决它的方法...

我将 PaymentDate 条目从允许 EditMode 更改为仅将 CheckBox 设置为 True

然而,最终用户可能不希望以这种方式完成,因此问题可能仍未得到解答,但就目前而言,这是可行的。

If e.Cell.Column.Key = "PaymentDate" Then
   e.Cell.Row.Cells("Customer_Paid").Activation = Activation.AllowEdit
   e.Cell.Row.Cells("Customer_Paid").Value = True
End If