0

在使用 HTML 选择控件(不是 .net 服务器控件 DropDownList)时,我想从服务器端设置一个具有特定值的项目。我该怎么做。我使用 asp.net 作为服务器端技术。

以下是我的选择框。我不想在其中添加 runnat="server" 属性

<select id="ddlPriceBetween" name="ddlPriceBetween">
    <option value="0" selected="selected">All</option>
    <option value="1">Less than 10,000 Rs. </option>
    <option value="2">10,000 - 20,000 Rs. </option>
    <option value="3">20,000 - 30,000 Rs. </option>
    <option value="4">30,000 - 40,000 Rs. </option>
    <option value="5">40,000 - 50,000 Rs. </option>
</select>
4

3 回答 3

0

在 ASP.NET 中,通常的约定是使用与 Postback 模型配合得更好的服务器端控件。所以你可以使用等价物:

<asp:DropDownList ID="filterResultsBy" runat="server" CssClass="ddlFilter">
    <asp:ListItem Value="" Text="Select..." />
    <asp:ListItem Value="Date" Text="Date" />
    <asp:ListItem Value="Subject" Text="Subject" />
    <asp:ListItem Value="Status" Text="Status" />
</asp:DropDownList>

这将允许您访问后面代码中的 filterResultsBy 变量并检索当前选择的值。要使此功能与 jQuery 等客户端脚本库一起工作,请添加一个类并使用类选择器而不是 id 选择器,因为 ASP.NET 服务器端控件中会发生名称修改:

$('.ddlFilter').change(function() {
    var sel = $(this).val(); 
    if(sel === 'DATE') { 
        hideAll(); // a function to hide all the divs first 
        $('#divDateRangeSearch').show(); 
    } else if (sel === 'SUBJECT') { 
        ///so on... 
    } 
});
于 2012-12-11T11:16:30.897 回答
0

如果您不想使用runat='server'或 ASP 下拉菜单,那么您将无法在服务器上访问它,您应该考虑的一件事是 html 标记的美妙之处在于它在客户端呈现并且它没有直接的服务器通信。所以如果你愿意,那么你需要间接的方法来设置使用 jquery 或 javascript 的选择,即你可以使用选定的值设置隐藏字段,并且在文档准备好时你可​​以设置选定的值。

例如:设置选定值

工作演示

于 2012-12-11T11:46:18.620 回答
-1

无法访问 .cs 页面上的 HTML 控件。因此,在您的情况下,将 runat 服务器放在您的选择控件中,如下所示

 <select id="ddlPriceBetween" name="ddlPriceBetween" runat="server">
      <option value="0" selected="selected">All</option>
      <option value="1">Less than 10,000 Rs. </option>
      <option value="2">10,000 - 20,000 Rs. </option>
      <option value="3">20,000 - 30,000 Rs. </option>
      <option value="4">30,000 - 40,000 Rs. </option>
      <option value="5">40,000 - 50,000 Rs. </option>
 </select>

您的 .cs 代码将是

 ddlPriceBetween.SelectedIndex=yourindex.
于 2012-12-11T11:28:35.517 回答