0

私は、3 つのボタンを持つこの UI を開発しています。

  1. 消去
  2. 更新プロセス
  3. 保存

ユーザーはデータ グリッドから行を選択し、2 つのボタンのいずれか、つまり削除または更新プロセスをクリックしますが、ユーザーが保存ボタンを押さない限り、変更はデータベースに保存されません。

ユーザーがクリックしたボタンに応じて、削除と更新のプロセスに同じ保存ボタンを使用することを考えていましたが、UI はストアド プロシージャを呼び出します。

アプリケーションは C#、WPF です。

これまたは他の提案をどのように処理できるかについて、いくつかのアイデアを教えてください。

4

3 に答える 3

0

グリッドのデータ ソースとして何を持っているかによって異なります。バックエンドが作業単位 (EF や NHibernate など) をサポートしている場合、データを直接変更すると、コンテキストで Save を呼び出すと、コンテキストが変更とその順序を解決します。

オブジェクトのバインド リストをデータ ソース (ビュー モデル、WPF アプリに強く推奨) として使用する場合は、新しいフィールドをビューモデルに追加し、[ChangeType = ChangeType.RefreshProcess or ChangeType.Deleted保存] で [変更済み] フィールドに基づいてアクションを処理する必要があります。

于 2011-06-13T07:31:39.367 に答える
0

選択した行が手元にあると仮定します。あなたが持っている可能性がありglobal boolean variable isDeleteClickedます。ユーザーが削除ボタンをクリックしたとき、そのイベント ハンドラーで、isDeleteClicked = true;ユーザーが更新プロセス ボタンをクリックしたとき、そのボタン イベント ハンドラーで設定できます。isDeleteClicked = false;保存ボタンがクリックされたとき、そのイベント ハンドラーで実行できます。

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

または、別のオプションとして、たとえば 3 つの値を使用して列挙を作成することもできます。

public enum OperationSelected
    {
        DeleteClicked,
        RefreshProcessClicked,
        NoneClicked
    }

OperationSelected opSelected = OperationSelected.NoneClicked;On delete button イベント ハンドラ doのようなグローバル列挙型変数 opSelected を作成します。

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

最も簡単な方法は、クリックされたボタンと選択された行を保存し、このデータを保存ハンドラーで処理することです。[削除] または [更新] をクリックすると、2 つのフラグ (whichButton と gridRow) が上書きされます。whichButton の値に基づいて、Save ハンドラは適切なロジックを実行します。

これは、あなたが言っているように見える変更を1つだけ保存できることを意味します...

より多くの行の変更をキューに入れたい場合は、上記の 2 つのフラグをコンテナーに格納し、Save ハンドラーでエントリを 1 つずつ処理する必要があります。Refresh と Delete の両方でコンテナに同じ行が追加されたらどうなるか考えてみてください...

于 2011-06-13T07:25:26.213 に答える