私はこの問題を非常に長い間抱えていて、DropDownListを介して人からユーザー入力を取得しようとしています。初めて(ポストバック後)動作するようです。しかし、ユーザーにDropDownListから新しい値を選択させようとすると、デフォルトで以前に選択した値に戻っているように見えます。私の質問は、javascriptコードを取得して、現在新しく選択されている値に変数を再割り当てする方法です。ポストバックを行うと、更新されるので機能するようです。しかし、私は毎回ポストバックをしたくありません。
これが私のjavascriptコードです:
function getCaseFiles(canMoveExpenses) {
//create Popup with content from div
$('#ddlFiles').dialog({
autoOpen: true,
height: 'auto',
width: 'auto',
modal: true,
buttons: {
"Ok": function () {
debugger;
var dropDownList = document.getElementById("ddlCaseFilesNew");
var newCaseDdl = dropDownList.options[dropDownList.selectedIndex].value;
//alert("newCaseDdl = " + newCaseDdl);
var oldCaseFile = $("#hidCaseFile").val();//<asp:HiddenField id="hidCaseFile">
//alert(oldCaseFile);
if (newCaseDdl != -1) {
moveCasefile(canMoveExpenses, newCaseDdl, oldCaseFile);
$(this).dialog('close');
$("#viewExpensesGrid").flexReload();
}
else {
showMessage("Error. Please Select a Value From The Lists.");
}
},
Cancel: function () {
$(this).dialog('close');
$("#viewExpensesGrid").flexReload();
}
}
});
}
これが私のDropDownListdivです:
<div id="ddlFiles">
<label>
Select new CaseFile:</label>
<asp:DropDownList runat="server" ID="ddlCaseFilesNew" DataSourceID="dsCaseFiles"
DataTextField="Display" DataValueField="FileID"
OnPreRender="ddl_PreRender" Width="300px"/>
</div>
私の関数はこのdivを呼び出し、カスタムポップアップ内に配置します。
ポストバックでない場合、selectedIndexを含む変数は更新されていないようです。