【问题标题】:Cannot set UltraGrid Checkbox value to True after saving the initial data保存初始数据后无法将 UltraGrid 复选框值设置为 True
【发布时间】:2016-09-27 14:13:38
【问题描述】:

我的项目包含一个允许输入订单的表单,使用 UltraGrid

一栏是checkbox风格栏,表示订单是否已送达。

当订单到达“第 4 阶段 - 等待发货”时,用户可以将列值设置为True,然后会弹出一个新窗口,让用户输入发货的数量和价值。 如果订单尚未完全交付,则将checkbox 设置回False,并且订单行变为黄色(例如;已订购了 5 个门,但仅交付了 3 个 = False,但订单为黄色线)。

在保存订单、关闭订单并返回订单后,我尝试将 Checkbox 设置为 True,以更新订单以添加其余交货(最后 2 个关口已已交付),但是一旦我将其设置为True,它立即再次变为False(在CellChange方法中单步执行以下代码时,它表示单元格值也是False)。

那么,为什么我只能更改一次值?保存后为什么不能再更改值?是因为它在数据库中保存为False吗?

Try
  If e.Cell.Column.ToString = "Goods_Delivered" Then
     e.Cell.Row.Update()

       If e.Cell.Value = True Then
           If IsDBNull(e.Cell.Row.Cells("Final_Delivery").Value) Then
              MsgBox("Please enter a delivery date", MsgBoxStyle.OkOnly, "Invalid Date")
                    e.Cell.Row.Cells("Goods_Delivered").Value = False
           Else
            Dim f As New dlgDelivery(e.Cell.Row, Me, e.Cell.Row.Cells("Final_Delivery").Value, con, orderNumber, e.Cell.Row.Cells("Product_Code").Value, exTotal)
                f.ShowDialog()
           End If

           e.Cell.Row.Update()

        cmdCheck_Click(sender, New EventArgs)
        cmdTotals_Click(sender, New EventArgs)

  ElseIf e.Cell.Value = False Then
      ugProducts.ActiveRow.Cells("Final_Delivery").Value = DBNull.Value
       productCode = ugProducts.ActiveRow.Cells("Product_Code").Value
       database.NotDelivered(orderNumber, productCode, con)
     Exit Sub
  Else
  End If

【问题讨论】:

    标签: vb.net checkbox infragistics ultrawingrid


    【解决方案1】:

    其中的错误是e.Row.Update()

    我正在提交单元格的值,然后您正在设置单元格的值,这导致 CellChange 再次递归触发,之后我不确定会发生什么,但有更有效的方法写这段代码。

    Try
      If e.Cell.Column.Key = "Goods_Delivered" Then
       Dim goodsDelivered As Boolean = Boolean.Parse(e.Cell.Text)
         If goodsDelivered = True Then
          If IsDBNull(e.Cell.Row.Cells("Final_Delivery").Value) Then
           MsgBox("Please enter a delivery date", MsgBoxStyle.OkOnly, "Invalid Date")
           Dim checkEditor As CheckEditor = e.Cell.EditorResolved
           checkEditor.Value = False
          Else
           Dim f As New dlgDelivery(e.Cell.Row, Me, e.Cell.Row.Cells("Final_Delivery").Value, con, orderNumber, e.Cell.Row.Cells("Product_Code").Value, exTotal)
           f.ShowDialog()
          End If
         ElseIf goodsDelivered = False Then
           ugProducts.ActiveRow.Cells("Final_Delivery").Value = DBNull.Value
                    productCode = ugProducts.ActiveRow.Cells("Product_Code").Value
                    database.NotDelivered(orderNumber, productCode, con)
                 Exit Sub
             End If
          End If
    
    Catch ex As Exception
       errorLog(ex)
    
     End Try
    

    【讨论】:

      猜你喜欢
      • 2018-05-04
      • 1970-01-01
      • 2021-04-26
      • 1970-01-01
      • 2014-12-23
      • 1970-01-01
      • 1970-01-01
      • 2021-12-10
      • 1970-01-01
      相关资源
      最近更新 更多