私は項目を上下にシフトする2つのボタンを持つリストボックスを持っています。アイテムが手作業でバインドされている場合、位置を移動してデータベースに保存すれば問題ありませんが、テキストボックスから新しいアイテムを追加する場合は、その位置を上下に移動して保存します私のフォーム、私は下に示すようにエラーが発生します、親切にアドバイスをしてください、私はセキュリティ機能をオフにしたくない。ありがとう:リストボックス項目のシフト+無効なポストバックまたはコールバック引数
これは、JSの私のシフトアップコードです:
function moveUp() {
// get the list box
var lb = document.getElementById("<%=uilstMemTypeTier.ClientID%>");
// if there are less than 2 items ignore it
if (lb.length < 2) return false;
// if the first item is selected it means that it cannot move up anymore so ignore it
if (lb.options[0].selected) return false;
var tempOpt;
for (i = 1; i < lb.length; i++) {
if (lb.options[i].selected) {
// remove the previous option and put it in a temp var
tempOpt = new Option(lb.options[i - 1].value, lb.options[i - 1].value);
// push the current one back one
lb.options[i - 1] = new Option(lb.options[i].value, lb.options[i].value);
lb.options[i - 1].selected = true;
// push the previous one into the current space
lb.options[i] = tempOpt;
}
}
repopulateHiddenFieldDefaultsFromListBox();
repopulateHiddenFieldListItemsFromListBox();
}
function repopulateHiddenFieldDefaultsFromListBox() {
// get the list box
var lb = document.getElementById("<%=uilstMemTypeTier.ClientID%>");
// get the hidden field
var hf = document.getElementById("<%=hf_listBasedFields_defaultItems.ClientID%>");
for (i = 0; i < lb.length; i++) {
if (lb.options[i].selected) hf.value += lb.options[i].value + delim;
}
}
function repopulateHiddenFieldListItemsFromListBox() {
// get the list box
var lb = document.getElementById("<%=uilstMemTypeTier.ClientID%>");
// get the hidden field
var hf = document.getElementById("<%=uihdnlistBasedFieldsListItems.ClientID%>");
// loop thru the list box and repopulate the hf
hf.value = "";
for (i = 0; i < lb.length; i++) hf.value += lb.options[i].value + delim;
}
エラーメッセージ:
無効なポストバックまたはコールバック引数。イベントの検証は、in構成または<%@ Page EnableEventValidation = "true"%>を使用して有効になっています。セキュリティ上の理由から、この機能はポストバックまたはコールバックイベントの引数が元々レンダリングされたサーバーコントロールから発生することを確認します。データが有効で予期されている場合は、検証のためにポストバックまたはコールバックデータを登録するためにClientScriptManager.RegisterForEventValidationメソッドを使用します。