私には4つのドロップダウンコントロールがあるページがあります。選択に基づいて、グリッドの各行にテキストボックスを持つデータグリッドを表示します。私は各コントロールのユーザーからの入力を受け取り、保存をクリックするとデータベースに保存されます。未保存の変更が存在する場合にDropDownListの選択を防止します
問題:
私はページ上の未保存の変更があった場合にユーザーに警告するのに苦労だし、彼らはグリッド上のデータの異なるセットを示すことになるドロップダウン値を変更してみてください。
私は、ページ上の変更があった
<asp:HiddenField ID="hfSaveFlag" runat="server" Value="false" ClientIDMode="Static" />
をキャプチャ隠しフィールドを持っている私は変更があるたびに、私はtrue
に、この隠しフィールドフラグを有効にするテキストボックスの変更機能を有効にしています。
<asp:TextBox ID="txtRating" runat="server" Text='<%# Eval("rating") %>' Width="25"
ValidationGroup="rating" onchange="setPendingSaveFlag()" />
function setPendingSaveFlag(ctrl) {
$("#hfSaveFlag").val('true');
}
これは、これまで正常に動作し、値がテキストボックスの値の変化に応じtrue
に設定されています。私は私の意図があればあるこののonchange
function verifyPendingSave(ctrl) {
if ($("#hfSaveFlag").val() == 'true') {
alert('You have pending changes on the page.');
return false;
} else {
__doPostback(ctrl, '');
return true;
}
}
ため
ddlRFP.Attributes.Add("onchange", "verifyPendingSave(this);");
私のjavascriptのコードビハインドでのonchangeイベントを追加
<asp:DropDownList ID="ddlRFP" Width="250" runat="server" AutoPostBack="true"
OnSelectedIndexChanged="ddlRFP_SelectedIndexChanged" />
:以下のように
さて、私のドロップダウンリストがあります隠しフラグの値はtrueです。私は警告を表示し、ポストバックを抑制し、値を前もって選択します。選択された。 falseの場合はポストバックを実行します。
私は警告を見ますが、私はfalse
を返すがポストバックを止めていません。
私の他の部分は決してpostback
です。私はコントロールのIDとこの部分の実際のコントロールを参照してくださいが、それはグリッドビューの中にあるので、postback
にも見つけることができないかもしれないと思います。どういうわけか私は何かがとても些細なことを逃していると確信しています。
else {
alert(ctrl.id);
var control = document.getElementById(ctrl.id);
__doPostback(control, '');
return true;
}
に役立ちます願っています。 – arbitrarystringofletters
私は静かに確信していませんが、この 'ddlRFP.Attributes.Add( "onchange"、 "return verifyPendingSave(this);";) – Curiousdev
@Curiousdev - あなたが行く!それは働いているように見えます。しかし、選択された値は元の値に戻っていません。変更された値がビューでもリセットされることを確認する方法を教えてください。 – techspider