无法绑定来自 jquery 数据库中 json 值的下拉列表值

Posted

技术标签:

【中文标题】无法绑定来自 jquery 数据库中 json 值的下拉列表值【英文标题】:Not able to bind dropdownlist values coming from json values from databases in jquery 【发布时间】:2021-01-09 13:04:57 【问题描述】:

我想根据来自database table 的数据绑定控制值。除了下拉列表值未绑定之外,文本框等所有控件都已绑定。

下面是我的代码

function BindDataTableToJSONProject(strVal) 

            var ProjectData = JSON.parse(strVal);

            var getJSONValue = ProjectData.Table[0];
            if (getJSONValue.PROJECT_MANAGER_NAME != "" && getJSONValue.PROJECT_MANAGER_NAME != null) 
                $('#ContentPlaceHolder1_ddlProjMan').val(getJSONValue.PROJECT_MANAGER_NAME);
            
        
    </script>
<select name="ctl00$ContentPlaceHolder1$ddlProjMan" id="ContentPlaceHolder1_ddlProjMan" class="form-control">
    <option value="0">--Select--</option>
    <option value="1">ABC</option>
    <option value="2">PQR</option>
    <option value="3">XYZ</option>
</select>

下面是我的 json 数据。

ID: 6, MST_ID: 107, PROJECT_NO: "R4G-25-APD-210", CR_NO: "R4G-25-APD-ACR-1212", APPLICATION_NAME: "Workflow for VSAT Application", PROJECT_MANAGER_NAME: "XYZ",  …

【问题讨论】:

【参考方案1】:

一种方法是循环遍历 select 标记内的 options,然后检查 .text() 是否等于 PROJECT_MANAGER_NAME,如果是,则将 selected true 添加到该选项。

演示代码

var getJSONValue = 
  "ID": 6,
  "MST_ID": 107,
  "PROJECT_NO": "R4G-25-APD-210",
  "CR_NO": "R4G-25-APD-ACR-1212",
  "APPLICATION_NAME": "Workflow for VSAT Application",
  "PROJECT_MANAGER_NAME": "XYZ"

BindDataTableToJSONProject();

function BindDataTableToJSONProject() 
  if (getJSONValue.PROJECT_MANAGER_NAME != "" && getJSONValue.PROJECT_MANAGER_NAME != null) 
    //loop through option
    $('#ContentPlaceHolder1_ddlProjMan option').each(function() 
      //get text of option check if equal to pmn
      if ($(this).text() == getJSONValue.PROJECT_MANAGER_NAME) 
        $(this).prop("selected", true) //set slectd true
      
    )

  
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select name="ctl00$ContentPlaceHolder1$ddlProjMan" id="ContentPlaceHolder1_ddlProjMan" class="form-control">
  <option value="0">--Select--</option>
  <option value="1">ABC</option>
  <option value="2">PQR</option>
  <option value="3">XYZ</option>
</select>

【讨论】:

嘿斯瓦蒂,感谢您的回答.. 成功了..!!!【参考方案2】:

您尝试设置值(即3&lt;option value="3"&gt;XYZ&lt;/option&gt;

但是你选择了文字getJSONValue.PROJECT_MANAGER_NAME == "XYZ"的参数

【讨论】:

当我尝试使用$('#ContentPlaceHolder1_ddlProjMan').text(getJSONValue.PROJECT_MANAGER_NAME); 时,整个下拉列表变得清晰。!! 因为.text是改变下拉列表框的全文 @hub 我正在寻找,通常我知道它的价值 - 从我所看到的来看它并不那么容易 @hud 这就是他们的工作:codespeedy.com/select-option-from-dropdown-by-text-in-jquery @hud 我认为您必须找到其他更好的解决方案来了解 select 上的值 - 发送 jSon 数据上的值

以上是关于无法绑定来自 jquery 数据库中 json 值的下拉列表值的主要内容,如果未能解决你的问题,请参考以下文章

Jquery自动完成不过滤来自django的JSON数据

来自 Json 的 Jquery 自动完成值

无法使用jquery将json结果绑定到表

从 JSON 绑定 [(ng-Model)] 值

无法解析来自 jQuery Ajax POST 的 Json 结果

使用 knockoutjs 绑定来自 JSON 对象的数据 - Asp.net MVC