0

「ddlFiles」というdivがあります。多数のIDを含むDropDownListが含まれています。私がやろうとしているのは、ユーザーにIDを選択させ、選択した値を渡して操作を実行することです(ストアドプロシージャにはそれが必要です)。操作は最初から機能します。しかし、IDを再度選択しようとすると、新しいIDではなく古いIDが使用されます。したがって、正しいIDを渡すには、実際に2番目の新しいIDを取得する前に、ユーザーに新しいIDを2回選択させる必要があります。

(注:viewExpensesGridは私のflexigridです)-あまり便利ではありませんが、追加すると思いました。

これは、DropDownListから選択した値を取得し、それを関数に渡すための私の関数です。

 function getCaseFiles(canMoveExpenses) {
            //create Popup with content from div
            $('#ddlFiles').dialog({
                autoOpen: true,
                height: 'auto',
                width: 'auto',
                modal: true,
                buttons: {
                    "Ok": function () {
                        var dropDownList = document.getElementById("ddlCaseFilesNew");
                        var newCaseDdl = dropDownList.options[dropDownList.selectedIndex].value;
                        //alert("newCaseDdl = " + newCaseDdl);

                        var oldCaseFile = $("#hidCaseFile").val();
                        //alert(oldCaseFile);

                        if (newCaseDdl != -1) {
                            moveCasefile(canMoveExpenses, newCaseDdl, oldCaseFile);
                            $(this).dialog('close');
                            $("#viewExpensesGrid").flexReload();//simply refresh flexigrid
                        }
                        else {
                            showMessage("Error. Please Select a Value From The Lists.");
                        }
                    },
                    Cancel: function () {
                        $(this).dialog('close');
                        $("#viewExpensesGrid").flexReload();
                    }
                }
            });
        }

そして、これが私のdiv = "ddlFiles"です:

<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>

私のストアドプロシージャには新しいCaseIdと古いCaseIdが必要です。hidCaseFileはhiddenFieldです。(これにはすでに古いファイルIDが含まれています。

4

1 に答える 1

1

これを変更してみてください:

var dropDownList = document.getElementById("ddlCaseFilesNew");

これとともに

var dropDownList = $("#<%= ddlCaseFilesNew.ClientID %>");

実行時、サーバー コントロールには ID タグで指定されたものとは異なる ID があるため、「ddlCaseFilesNew」ではない ClientID を使用して取得する必要があります。

于 2012-10-01T14:12:26.877 に答える