2012-10-22 33 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