0

我正在开发这个 UI,它有 3 个按钮。

  1. 删除
  2. 参考过程
  3. 节省

用户从数据网格中选择行并单击两个按钮中的任何一个,即删除或刷新过程,但除非用户按下保存按钮,否则更改不会保存到数据库中。

我正在考虑为删除和刷新过程使用相同的保存按钮,这取决于用户单击了哪个按钮,UI 将调用存储的过程。

该应用程序位于 C#、WPF 上。

请给我一些想法,我该如何处理这个或其他一些建议。

4

3 回答 3

0

假设您有选定的行。你可以有global boolean variable isDeleteClicked。当用户单击删除按钮时,在其事件处理程序中,您可以设置isDeleteClicked = true;当用户单击刷新过程按钮时,在该按钮事件处理程序中,您可以执行isDeleteClicked = false;当单击保存按钮时,您可以在其事件处理程序中执行

if(isDeleteClicked)
{
//call SP for delete work
}
else
{
//call SP for refresh work
}

或者另一种选择可能是创建一个具有三个值的枚举,例如。

public enum OperationSelected
    {
        DeleteClicked,
        RefreshProcessClicked,
        NoneClicked
    }

创建一个全局枚举变量 opSelected 就像OperationSelected opSelected = OperationSelected.NoneClicked;On delete button 事件处理程序一样

opSelected = OperationSelected.DeleteClicked;

在刷新过程按钮事件处理程序做

opSelected = OperationSelected.RefreshProcessClicked;

在保存按钮事件处理程序上

    if (opSelected.ToString() == OperationSelected.DeleteClicked.ToString())
    {
    //call SP for delete work
    }
    else  if (opSelected.ToString() == OperationSelected.RefreshProcessClicked.ToString())
    {
    //call SP for refresh work
    }
于 2011-06-13T07:22:12.000 回答
0

最简单的方法是只存储单击了哪个按钮和选择了哪一行,并在 Save 处理程序中处理这些数据。单击删除或刷新将覆盖两个标志(whichButton 和 gridRow)。根据 whichButton 的值,您的 Save 处理程序然后执行适当的逻辑。

这意味着您只能保存一个更改,这就是您所说的......

如果您希望能够将更多行更改排队,那么您需要将上面的两个标志存储在一个容器中,并在 Save 处理程序中一一处理条目。想想如果将同一行添加到容器中以进行刷新和删除会发生什么...

于 2011-06-13T07:25:26.213 回答
0

取决于你有什么作为网格的数据源。如果后端支持工作单元(如 EF 或 NHibernate),那么您直接更改数据,并且当您在上下文上调用 Save 时,上下文将解析更改及其顺序。

如果您使用一些对象的绑定列表作为数据源(视图模型,强烈推荐用于 WPF 应用程序),那么您应该向 ViewModel 添加一个新字段ChangeType = ChangeType.RefreshProcess or ChangeType.Deleted,然后在保存时根据 Changed 字段处理操作。

于 2011-06-13T07:31:39.367 回答