0

ポップアップに 2 つのドロップダウン リストを追加しようとしています。しかし、私は問題を抱えています。

ポップアップを作成する「showMessage」という関数があります。

そう: showMessage("こんにちは"); 「こんにちは」という単語を含むポップアップが作成されます。ここで私の質問は、2 つのドロップダウンリストを追加するにはどうすればよいかということです。2 つのドロップダウン リストを使用して div を作成してから、showMessage(document.getElemenyBiId(ddl)); を実行してみました。しかし、私はそれが正しくないことを知っています。

ここに私の「showMessage」関数があります:

function showMessage(msg, title, onOk) {
if (title === undefined)
    title = "";

if (onOk === undefined)
    onOk = function () {
        $(this).dialog('close');
    }

$('<div>').dialog({
    title: title,
    height: 'auto',
    width: '250',
    open: function () {
        $(this).html(msg);
    },
    buttons: {
        Ok: onOk
    },
    close: function () {
        $(this).remove();
    }
});

}

そして、ここに私のdropdownList divがあります:

<div id="newExpenseTypeDialog" style="display:none;">
        <label>Select new CaseFile:</label>
        <asp:DropDownList runat="server" ID="ddlCaseFiles" DataSourceID="dsMyCaseFiles" DataTextField="Display" DataValueField="FileID" OnPreRender="ddl_PreRender" Width="524px" />
</div>

ポップアップを取得して2つのドロップダウンリストをロードし、ユーザーに両方からIDを選択させ、2つの値を関数に渡してやりたいことを実行させる必要があります。

function moveCasefile(isMovePossible) {
        //var newCaseFileID;
        //var oldCaseFileID;
         //this area I am trying to get the popup to happen and get the input from the user via dropdownLists.
        if (newCaseFileID || oldCaseFileID) {
            //alert(ans);

            var selectedExpensesList = getSelectedExpenseIDs();
            if (selectedExpensesList.length > 0) {
                $.ajax({
                    type: "POST",
                    //url: "/Tasks/ViewTasks.aspx/deleteTasksAndLinkedItems",
                    url: '<%=ResolveUrl("~/Expenses/ViewExpenses.aspx/moveNewCaseFile")%>',
                    data: "{'MoveCaseFile' : '" + isMovePossible + "','ExpId': ['" + selectedExpensesList.join('\',\'') + "'],'newCaseFileID': '" +
                    newCaseFileID + "', 'oldCaseFileID': '" + oldCaseFileID + "'}",
                    //dataaaaaa`

DropDownLists を使用した私の div:

<div id="newExpenseTypeDialog" style="display:none;">
        <label>Select new CaseFile:</label>
        <asp:DropDownList runat="server" ID="ddlCaseFiles" DataSourceID="dsMyCaseFiles" DataTextField="Display" DataValueField="FileID" OnPreRender="ddl_PreRender" Width="524px" />
        <asp:DropDownList runat="server" ID="ddlCaseFiles2" DataSourceID="dsMyCaseFiles" DataTextField="Display" DataValueField="FileID" OnPreRender="ddl_PreRender" Width="524px" />
</div>

私の DropdownLists データ ソース:

<asp:SqlDataSource ID="dsMyCaseFiles" runat="server" ConnectionString="<%$ ConnectionStrings:OSCIDConnectionString %>" ProviderName="System.Data.SqlClient" SelectCommand="p_CaseFiles_ListActiveCaseFilesAssignedTo" SelectCommandType="StoredProcedure">
    <SelectParameters>
        <asp:SessionParameter Name="InvestigatorID" SessionField="InvestigatorID" />
        <asp:SessionParameter Name="AssignedTo" SessionField="InvestigatorID" />
    </SelectParameters>
</asp:SqlDataSource>

そして、「pre_render」のコードビハインド:

 protected void ddl_PreRender(object sender, EventArgs e)
{
    DropDownList ddl = (DropDownList)sender;
    try
    {
        if (ddl.Items[0].Value != "-1")
            ddl.Items.Insert(0, new ListItem("--Select--", "-1"));
    }
    catch
    {
        ddl.Items.Insert(0, new ListItem("--Select--", "-1"));
    }
}
4

1 に答える 1

1

次のように、Select Index Change でその関数を呼び出すことができます。

<asp:DropDownList ID="ddl" runat="server"  AutoPostBack="true" onchange="javascript:showMessage();" OnSelectedIndexChanged="ddl_SelectedIndexChanged"></asp:DropDownList>

また、DropDown Databound イベントでは、次のように記述できます。

 protected void ddl_DataBound(object sender, EventArgs e)
{
    ddl.Items.Insert(0, new ListItem("Select new CaseFile:", "-1"));
}

値を取得するには:-

var e = document.getElementById("ddl");
var strUser = e.options[e.selectedIndex].value;

ドロップダウン テキストを選択した場合:-

var e = document.getElementById("ddl");
var strUser = e.options[e.selectedIndex].text;
于 2012-09-20T15:27:18.677 に答える