我是一个开发这个UI,有3个按钮。一个按钮处理2个不同按钮的相同事件,取决于哪个按钮被点击
- 删除
- referesh过程
- 节省
用户选择任意2个按钮的从数据网格和点击的行,即,删除或刷新的过程,但直到并且除非用户按下保存按钮,更改不会保存到数据库中。
我正在考虑删除和刷新过程中有相同的保存按钮,这取决于用户点击了哪个按钮,UI将调用存储过程。
该应用程序在C#上,WPF。
请给我一些想法,我该如何处理这个或其他建议。
我是一个开发这个UI,有3个按钮。一个按钮处理2个不同按钮的相同事件,取决于哪个按钮被点击
用户选择任意2个按钮的从数据网格和点击的行,即,删除或刷新的过程,但直到并且除非用户按下保存按钮,更改不会保存到数据库中。
我正在考虑删除和刷新过程中有相同的保存按钮,这取决于用户点击了哪个按钮,UI将调用存储过程。
该应用程序在C#上,WPF。
请给我一些想法,我该如何处理这个或其他建议。
假设你有选定的行。你可以有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;
删除按钮事件处理函数中执行
opSelected = OperationSelected.DeleteClicked;
在刷新过程中的按钮事件处理函数中执行
opSelected = OperationSelected.RefreshProcessClicked;
在Save按钮的事件处理程序做
全局枚举变量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-13 07:34:12
最简单的方法是只保存点击哪个按钮,选择哪一行并在保存处理程序中处理这些数据。 单击删除或刷新将覆盖两个标志(whichButton和gridRow)。基于哪个按钮的值,您的保存处理程序将执行相应的逻辑。
这意味着你只能保存一个变化,这是你似乎说什么......
如果你希望能够排队更行更改,那么你需要两个标志存储在上面的容器并在保存处理程序中逐个处理条目。想想看,如果将同一行添加到容器中以进行刷新和删除,会发生什么......
取决于您作为网格的数据源拥有什么。如果后端支持工作单元(例如EF或NHibernate),则直接更改数据,并且在上下文中调用Save时,上下文将解析更改及其顺序。
如果您使用一些对象绑定列表作为数据源(强烈建议用于WPF应用的View Model),那么您应该向ViewModel ChangeType = ChangeType.RefreshProcess or ChangeType.Deleted
添加一个新字段,然后保存您基于更改了字段。
将保存逻辑封装到方法中,并根据需要在点击中调用它! – V4Vendetta 2011-06-13 07:17:51
如果用户单击删除,然后刷新然后保存同一行,该怎么办? :) – 2011-06-13 07:26:45
如果用户单击首先删除然后刷新过程。刷新按钮被点击时删除的行添加到gridview? – Azodious 2011-06-13 07:28:20