当填充我的应用程序中的DataGridView时,将触发以下方法:
public void OrderSelectionChanged()
{
ConfirmOrCancelChangesDialog();
// Get values from selected order and populate controls
if (view.OrderTable.SelectedRows.Count != 0)
{
OrderViewObject ovm = (OrderViewObject)view.OrderTable.SelectedRows[0].DataBoundItem;
selectedOrder = orderModel.GetOrderById(ovm.OrderId);
// Populate view controls with data from selected order
view.OrderID = selectedOrder.Id.ToString();
---->> view.OrderDateCreated = selectedOrder.DateCreated; <<-----
view.OrderDeliveryDate = selectedOrder.DeliveryDate;
PopulateOrderAddressControls(selectedOrder.Address);
PopulateOrderItemTableControl();
PopulateOrderWeightAndSumControls();
view.OrderNote = selectedOrder.Note;
// Enable buttons
view.DeleteOrderButtonEnabled = true;
view.NewOrderItemButtonEnabled = true;
}
else
{
view.DeleteOrderButtonEnabled = false;
}
}
出于某种原因,“isSaved”变量在我用箭头标记的行上从true变为false,我无法弄清楚原因。这不应该发生,以前从来不是问题,而是突然出现。
正在使用以下方法检查变量“isSaved”:
public void ConfirmOrCancelChangesDialog()
{
if (!isSaved)
{
DialogResult dialog = MessageBox.Show(Properties.Resources.SaveChanges,
Properties.Resources.SaveChangesTitle, MessageBoxButtons.YesNo);
if (dialog == DialogResult.Yes)
{
SaveOrder();
}
else
{
UndoChanges();
}
}
}
这导致每次启动应用程序时都会出现保存或取消对话框,这显然是错误的。由于选择更改方法被触发三次并且在第一次运行期间更改了isSaved,因此在第二次执行期间会弹出对话框。通过逐步调试,我可以弄清楚isSaved在什么时候正在改变,但不知道如何或为什么。
View是表单,OrderDateCreated是DateTimePicker的getter / setter,selectedOrder只是一个订单对象而DateCreated是Date。我在这里错过了什么吗?
干杯!
答案 0 :(得分:0)
它似乎与view
对象的代码设置值有关。
如果您没有自己创建属性,则该对象可能具有set
属性,可检测到任何更改并将isSaved
属性设置为false。
尝试此解决方法:
bool wasSaved = isSaved; //reference properly to your isSaved variable, and store it in the wasSaved local var
view.OrderID = selectedOrder.Id.ToString();
view.OrderDateCreated = selectedOrder.DateCreated;
view.OrderDeliveryDate = selectedOrder.DeliveryDate;
isSaved = wasSaved; //revert to the previous state