2016-09-27 26 views
0

我的項目包含一個允許輸入訂單的表單,使用UltraGrid保存初始數據後無法將UltraGrid複選框值設置爲True

一列是checkbox樣式列,表示訂單是否已交貨。

當訂單達到「階段4 - 等待發貨」時,用戶可以將列值設置爲True,然後再提示新窗口,以允許用戶輸入交貨量和價值。 如果訂單尚未完全交付,checkbox設置爲False,訂單行變爲黃色(例如,已訂購了5個門,但僅交付了3個= False,但爲黃色訂單行)。

保存訂單後關閉並重新登錄,我試圖設置CheckboxTrue,更新訂單以添加剩餘交付(最終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 

回答

0

其中的錯誤是與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 
相關問題