2016-09-27 3 views
0

Мой проект содержит форму, которая позволяет вводить заказы, используя UltraGrid.Невозможно установить значение Checkbox TrueGrid True после сохранения исходных данных

Один столбец представляет собой столбец стиля 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 

ответ

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