2009-06-30 17 views
0

私は、.NET GridViewのRowを基本的に表すJavascriptオブジェクトを持っています。 グリッド内の任意の行をクリックすると、その行のすべての入力要素が「有効」になります(つまり、「編集」モード)。JQueryを使用して「ダーティ」要素を元の値に戻す

私はこれまでのところは良い

$(":input", this._row).attr('disabled', true); 
or 
$(":input", this._row).removeAttr('disabled'); 

を選択された行に応じて、このコードを実行します。ユーザーが「編集モード」に入る前に、その行の値を追跡したいので、変更を保存せずにその行をクリックすると元の値に戻すことができます。

ので、私はこれを行うことにより、配列の元の値をキャプチャ:

var $inputs = $(":input", this._row); 
var values = {}; 
$inputs.each(function(i, el) { values[el.name] = $(el).val(); }); 

「値」列は次のようになります。

ctl00$ContentPlaceHolder1$resultsGrid$ctl04$COMPONENT1 "56" 
ctl00$ContentPlaceHolder1$resultsGrid$ctl04$COMPONENT2 "98" 
ctl00$ContentPlaceHolder1$resultsGrid$ctl04$COMPONENT3  "08" 
ctl00$ContentPlaceHolder1$resultsGrid$ctl04$COMPONENT4 "200" 

グレートこれまでのところ。ユーザーはこれらの値を変更できますが、変更を保存しないことにします。 だから、私はこの行を復元する必要があります '値'配列からorignal値です。 誰かがこれを行う最善の方法を教えてもらえますか?イムは、私がテストを設定するための時間を持っていませんが、私の頭の上のオフに私がしようとするだろう、それは単純なものですが、私はjqueryの専門家だ、まだ...

おかげ

答えて

1

「データメソッド」(http://docs.jquery.com/Internals/jQuery.data)を使用して、関連するデータを要素と共に保存することができます。

ような何か:

//Call this function for each row after the page has loaded. 
function storeOriginalData(row) 
{   
    var $inputs = $(":input", row); 
    //For each input element inside the table row, we store it's original value 
    //using the 'data' method of jQuery. 
    $inputs.each(function(i, el) { $(el).data('oldValue', el.val()); });  
} 

//Call this function from the reset button code. 
function resetOriginalData(row) 
{ 
    var $inputs = $(":input", row); 
    //Now we get the original value using the data method and store it in the input element. 
    $inputs.each(function(i, el) { $(el).val($el.data('oldValue')); 
}; 

この方法で、あなたはそれぞれの行は「値」オブジェクトのメンテナンスを避けることができます。

EDIT:詳細とそのしくみと

変更されたコード。

+0

私はこれを使用する/理解しようとしていますが、後で元のデータを保存するにはどうしたらいいですか? 最初の 'inputs.each'関数は実際に何を作成しますか? 少し詳細を教えてください。感謝! ありがとう! – 29er

+0

'データメソッド'を使用すると、あらゆる種類のデータをjQuery要素に関連付けることができます。つまり、コード内でその '値'オブジェクトを使用したり、その状態を維持する必要はありません。コメントでコードを修正しました。さらなる質問がある場合はお知らせください。 – SolutionYogi

+0

説明に余分なステップを取ってくれてありがとうsooo。よく働く!!非常に感謝します – 29er

0

望ん:

$ inputs.each(function(i、el){$(el).val(values [el.name]);});

すでに値が保存されていることを確認したとします。

0

行htmlをコピーして保存することはできませんでしたか?変更した場合は元の行を復元できますか?

+0

よく元のinnerHTML値を保存しましたが、後でこの行を取得してthis._row.innerHTMLを古い値に設定しようとすると「不明なランタイムエラー」が発生します。何かご意見は? ありがとう – 29er

関連する問題