2

新しい従業員を登録するWebフォームがあります。フォームには、個人情報、住所情報、特別ステータスの3つの部分があります。ただし、フォーム全体にボタンは1つしかありません。フォームを送信すると、すべての情報がデータベースに更新されます。したがって、3つのUpdateステートメントがデータベースに対して実行されます。メソッドは、UpdatePersonalInfo、UpdateAddressInfo、およびUpdateSpStatusです。特定の部分のフィールドに変更があったかどうかを確認し、それがtrueの場合にのみupdateメソッドを実行する方法はありますか?だからこのようなもの:

if (There's been any change to the personal data of the employee)
{
  UpdatePersonalInfo;
}
if (There's been any change to the address information of the employee)
{
  UpdateAddressInfo;
}

確かに、PageLoadのセッションオブジェクトに以前のすべての値を保存し、メソッドを実行する前にそれらを1つずつ比較することができます。しかし、これをもっと簡単に行う魔法の方法があるのではないかと思いました。

4

1 に答える 1

3

これが、既に述べた代替手段のいずれよりも優れたソリューションであるかどうかはわかりませんが、コントロールの 、 などのイベントにアタッチするデフォルト ハンドラーを作成して、どのTextChangedイベントSelectedIndexChangedが変更されたかを追跡できます。

List ChangedControls = new List(Of, String);
private void ChangedValue(object sender, System.EventArgs e) {
    WebControl cntrl = (WebControl) sender;
    ChangedControls.Add(cntrl.ID);
}

次に、ボタンをクリックChangedControlsして、関連するコントロールのリストを精査します。

于 2012-08-25T12:24:36.900 に答える