0

同じ送信ボタンを使用して新しい行を追加し、ASP.NET フォームでデータベース テーブルの行の値を編集しています。CommandArgument適用されるメソッドを変更するために使用します。

protected void btnSave_Click(object sender, EventArgs e)
    {
       if (!CheckProfileComplete())
        {
            btnSave.CommandArgument = "new";
            btnSave.Text = "Save";
        }
        else
        {
            btnSave.CommandArgument = "update";
            btnSave.Text = "Update";
        }
    }
protected void btnSave_Click(object sender, EventArgs e)
    {
        if (!Page.IsValid)
            return;
        string strCmd = this.btnSave.CommandArgument;
        if (strCmd.ToLower() == "new")
        {
             //Add new Record
        }
        else if(strCmd.ToLower() == "update")
        {
             //Update existing record.
        }
     }

Add New空白のフォームが表示される場合Update、以前にデータベース テーブルに追加されたデータを含むフォームが表示され、ユーザーは値を編集して保存することができます。はCommandArgument、他のいくつかのパラメーターをチェックした後、ページの読み込み時に更新されます。

メソッドは正常に実行されますが、のAdd New場合は値を編集できませんUpdate。フォームは、編集のためにユーザーに提示する前に動的に入力された同じ値を投稿することを意味します。[保存 (更新モード)] ボタンをクリックした後、変更が表示されません。値が変更されて戻された後でも、フォームは現在の状態として以前の状態を取るようです。

たとえば、最初にデータベースから読み取ったときにtbName.Text値があった場合。foo

ユーザーが編集し、ポストバック前にtbName.Textなりました。bar

ただし、デバッグ モードでフォームがポストされると、現在の値が代わりにtbName.Text表示されます。foobar

4

2 に答える 2

0

ボタンの動作方法を変更する必要があるのは、どのイベントが発生したのかを判断する必要があります。それがわかったら、そのイベント内でボタンのサブスクライブを解除し、別のものにサブスクライブします。

private void OnMyEvent()
{
   button1.Click -= "theEventIDoNotWant";
   btnSave.Click += new EventHandler(theEventIWant);
}
于 2013-11-11T07:48:44.283 に答える