2012-10-22 68 views
0

我有一個html選擇下拉列表,我填充數據使用jQuery。我將runat =「server」添加到select中,以便以編程方式訪問它。但是,在提交頁面時,下拉列表中沒有列表項。是否有一個原因。填充Jquery的下沉列表是空的按鈕點擊

這裏是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#方法,既dropdownlists似乎空着。

+1

它很明顯,因爲ddlDepartments填充在客戶端,更改不會存儲在任何地方......就像任何隱藏的領域或某處。我建議將所有/選定的值/值存儲在隱藏字段中,然後在服務器端訪問。 – Pratik

回答

2

你可以嘗試訪問您的下降值下降這樣的名單:

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

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

注意,檢索值這樣會給你所選項目的value - 取決於列表是如何被填充此可能與下拉菜單中顯示的文字不一樣。

如果該值和文字是不同的,你實際上確實需要選定項目的文本,那麼你將需要做一些更復雜:

添加兩個隱藏字段到您的網頁(我們將使用這些存儲選擇):

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

在你getDepartmentManagers方法:

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

處理的onchangeddlDeparmentManagers名單的事件:

<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"標籤。

+0

謝謝。我使用了隱藏字段選項,因爲值和文本不總是相同的,我想實現一個解決方案。 – edwardl