未输入UltraGrid编辑模式

时间:2017-01-10 17:02:23

标签: vb.net checkbox infragistics ultragrid editmode

我在九月回复问a similar question(好吧,说实话),但是出于某种原因,这个问题的解决方案并没有在我最近的事件中发挥作用......

我的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行,但这次不成功。

1 个答案:

答案 0 :(得分:0)

不是这个问题的解决方法,而是我绕过它的一种方式......

我将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