根据下拉值字段中的部分值选择下拉列表

时间:2017-02-15 07:37:42

标签: javascript c# jquery asp.net

我有一个场景,我必须根据查询字符串选择丢弃值。

查询字符串可能类似于q=c-1 q=c-2 q=p-5

和下拉列表中的值可以为value="8-P-5" value="5-G-0" value="7-P-7"

如何根据查询字符串

选择下拉值

是否可以通过Code-behind C#或jquery做到这一点很容易解决。

<select name="ctl00$ContentPlaceHolder1$ddlOptionGroup" id="ContentPlaceHolder1_ddlOptionGroup" class="form-control">
    <option value="1-C-1">Item 1</option>
    <option value="4-C-2">Item 2</option>
    <option value="5-G-0">Item 3</option>
    <option value="7-P-7">Item 4</option>
    <option value="8-P-5">Item 5</option>
    <option value="10-C-4">Item 6</option>
    <option value="3-P-0">Item 7</option>
    <option value="2-P-0">Item 8</option>
    <option value="6-G-0">Item 9</option>

</select>

如果查询字符串为q=c-2,则应选择<option value="4-C-2" selected>Item 2</option>

2 个答案:

答案 0 :(得分:7)

如果您对JavaScript / jQuery解决方案持开放态度,可以使用window.location.search,然后使用jQuery选择器根据特定select标记中的contains条件查找该选项。

请注意,这会假定q中的值在select元素的value属性中是唯一可识别的。在您当前的数据集q=p-0中,项目7和项目8都匹配。由于你没有为那个案例提供商业规则,所以我在这里没有动过。

以下是演示此内容的代码段:

// use window.location.search
var search = '?q=p-5'; // window.location.search;
// handle possible search for this value ?foo=bar&q=p-5#fragment
var parms = search.substr(1).split('&');
for(var i=0; i< parms.length;i++)
{
  var keyValue= parms[i].split('=');
  if (keyValue[0] === "q" && keyValue.length > 0) {
    var value = keyValue[1].split('#');
    $('select > option[value*="' + value[0].toUpperCase() + '"]').prop('selected',true);
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="ctl00$ContentPlaceHolder1$ddlOptionGroup" id="ContentPlaceHolder1_ddlOptionGroup" class="form-control">
    <option value="1-C-1">Item 1</option>
    <option value="4-C-2">Item 2</option>
    <option value="5-G-0">Item 3</option>
    <option value="7-P-7">Item 4</option>
    <option value="8-P-5">Item 5</option>
    <option value="10-C-4">Item 6</option>
    <option value="3-P-0">Item 7</option>
    <option value="2-P-0">Item 8</option>
    <option value="6-G-0">Item 9</option>

</select>

答案 1 :(得分:1)

Referer

或者您可以通过Linq语法

来完成
for (int i = DropDownList1.Items.Count-1; i >0 ; i--)
        {
            if (DropDownList1.Items[i].Value.Contains("C-2"))
            {
                DropDownList1.Items[i].Selected = true;
                break;
            }
        }