0

jqueryを使用してデータを入力するhtmlselectドロップダウンがあります。プログラムでアクセスできるように、selectにrunat="server"を追加しました。ただし、ページを送信する場合、ドロップダウンリストにリストアイテムはありません。これには理由がありますか。

これがJqueryの呼び出しです

$(window).load(function () {                
         getListDepartments();  // method call to rest service, and it populates correctly

     }
 );

aspx

// getDepartmentManagers() populates ddlDeparmentManagers with names using jquery
    <select style="display: block;" id="ddlDepartments" class="eight" runat="server" onchange="getDepartmentManagers()">
    </select>

        <select style="display: block;" id="ddlDeparmentManagers" class="eight" runat="server">
        </select>

c#

protected void lbSearch_Click(object sender, EventArgs e)
{

    grdDepartmentEmployees.DataSource = service.FindListBySearch(ddlDepartments.Value, ddlDeparmentManagers.Value);
    grdDepartmentEmployees.DataBind();
}

私が抱えている問題は、上記のc#メソッドを実行すると、両方のドロップダウンリストが空のように見えることです。

4

1 に答える 1

2

次のように、ドロップダウンリストの値にアクセスしてみてください。

string department = Page.Request.Form["ddlDepartments"].ToString();
string manager = Page.Request.Form["ddlDeparmentManagers"].ToString();

grdDepartmentEmployees.DataSource = service.FindListBySearch(department, manager);                    
grdDepartmentEmployees.DataBind();

この方法で値を取得するvalueと、選択したアイテムの値が表示されることに注意してください。リストの入力方法によっては、ドロップダウンに表示されるテキストと同じでない場合があります

値とテキストが異なり、実際に選択したアイテムのテキストが必要な場合は、もう少し複雑なことを行う必要があります。

ページに2つの非表示フィールドを追加します(これらを使用して選択を保存します)。

<asp:HiddenField ID="SelectedDepartmentHiddenField" runat="server" />
<asp:HiddenField ID="DepartmentManagerHiddenField" runat="server" />

あなたのgetDepartmentManagers方法では:

$('#SelectedDepartmentHiddenField').val($('#SelectedDepartmentHiddenField').val());

リストのonchangeイベントを処理します。ddlDeparmentManagers

<select style="display: block;" id="ddlDeparmentManagers"
    class="eight" runat="server" onchange="departmentManagerChange()">

function departmentManagerChange() {
    $('#DepartmentManagerHiddenField').val($('#ddlDeparmentManagers').val());
}

次に、あなたのlbSearch_Click方法で:

grdDepartmentEmployees.DataSource =
    service.FindListBySearch(SelectedDepartmentHiddenField.Value,
        DepartmentManagerHiddenField.Value);                    
grdDepartmentEmployees.DataBind();

runat="server"どちらのアプローチでも、ドロップダウンリストにタグは必要ないことに注意してください。

于 2012-10-22T07:34:01.970 に答える