Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jqGrid,如何从查询中填充选择列表_Jqgrid - Fatal编程技术网

jqGrid,如何从查询中填充选择列表

jqGrid,如何从查询中填充选择列表,jqgrid,Jqgrid,我在coldfusion项目中得到了一个基本的jqGrid。 我在jqGrid中的一个字段是组合框。目前editoption值是硬编码的,如下所示 colModel : [ { name:'seqnum',index:'seqnum', width:100,resizable:true, align:"left",sorttype:"text",editable:true,edittype:"select",editoptions: { value:"1:one

我在coldfusion项目中得到了一个基本的jqGrid。 我在jqGrid中的一个字段是组合框。目前editoption值是硬编码的,如下所示

colModel :
[
  {
   name:'seqnum',index:'seqnum', width:100,resizable:true,   
   align:"left",sorttype:"text",editable:true,edittype:"select",editoptions:   
   { value:"1:one;2:two"},editrules:{required:true}
  }
]
我试图找出一种方法来填充查询/url下拉列表

任何帮助都将不胜感激


提前感谢

创建一个使用json查询url的函数。此函数应返回格式为1:1的字符串;2:2

例如:

    colModel :
    [
      {
       name:'seqnum',index:'seqnum', width:100,resizable:true,   
       align:"left",sorttype:"text",editable:true,edittype:"select",editoptions:
       { value:getSequenceNumbers()},editrules:{required:true}
      }
    ]

    function getSequenceNumbers(){
        $.getJSON("yourUrl", null, function(data) {
            if (data != null) {
                 //construct string.  
                 //(or the server could return a string directly)
            }
        });
    }
我想您也可以将函数内联,但我认为它更难阅读。

使用dataUrl


目前,dataUrl生成GET,但如果从Github中提取代码,则GET可以是对POST的更改,而不会产生明显的副作用。

美元.getJSON/getSequenceNumbers的答案不起作用。无法从回调返回数据作为GetSequenceNumber的返回值,因为回调是异步的。您需要使用Martin建议的dataURL方法,或者在$.getJSON回调中设置jqGrid

$(document).ready(function() {
 $.getJSON("GetURL", function(data) {
  setupGrid(data);
 });
});

function setupGrid(data) {
...
    colModel :
    [
      {
       name:'seqnum',index:'seqnum', width:100,resizable:true,   
       align:"left",sorttype:"text",editable:true,edittype:"select",editoptions:
       { value:data},editrules:{required:true}
      }
    ]

...
}

值得注意的是,如果您使用的是服务器端脚本语言,那么您可以完全避开这个问题。例如,您可以使用PHP

{name:'myselectdata', index:'myselectdata', width:160, formatter:'select', editable:true, edittype:"select", cellsubmit:"clientArray", editoptions:{ <? echo getData() ?>}  },

也许没有jQuery中处理所有内容那么优雅或便携,但我认为在概念上更容易。

假设在ColModel中有这样一个列:

{name:'id_UDM', index:'id_UDM', width:150, editable:true, edittype:"select", editoptions:{dataUrl:'filename.php'}}
editoptions:{dataUrl:'filename.php'}
必须首先声明它是具有以下内容的select元素:

edittype:"select"
然后,在editoptions参数中添加如下数据URL:

{name:'id_UDM', index:'id_UDM', width:150, editable:true, edittype:"select", editoptions:{dataUrl:'filename.php'}}
editoptions:{dataUrl:'filename.php'}
php必须返回一个带有选项的select元素,下面是一个示例:

<?php
    include("connectionToMyDatabase.php");
    $query1 = "SELECT * FROM table WHERE 
    $result1 = mysql_query($query1);
    $response ='<select>';
    while($row = mysql_fetch_array($result1)) {
         $response .= '<option value="'.$row['value'].'">'.$row['name'].'</option>';
    }
    $response .= '</select>';

    echo $response;

 mysql_close($db);  
?>

希望这有帮助。

我知道这是一个老问题,但我发现了同样的问题。 我通过结合dataUrl和ajaxSelectOptions来解决这个问题

请注意,dataUrl字符串是静态的,这意味着您不能在每次添加/编辑时发送不同的参数。下面的代码将不起作用

,editoptions: { dataUrl:"db.php?ajaxOp=getClassesOptions" + "&id="+selected_id } 
要发送id等参数,可以使用ajaxSelectOptions

ajaxSelectOptions:      //use this for combination with dataUrl for formatter:select
{       
    data: {
      id: function () {
          return selected_id;
      }
    }
},     

每次进行添加/编辑时,将执行返回所选\u id的函数。希望这有帮助

我将代码改为searchoptions而不是editoptions。但是,它会自动选择第一个选项并过滤列表,因此我添加了以下内容来缓解这一问题

 $response ='<select>';
 $response .= '<option value=""></option>';
 while($row = $stmt->fetch(PDO::FETCH_NUM)) {
      $response .= '<option value="'.$row[0].'">'.$row[0].'</option>';
 }
 $response .= '</select>';

 echo $response;

这类方法可以工作,但只有当您不想解码显示为ajax的第一个值以获取列表时,才会在编辑单元格时触发,因此formatter:“select”与此不兼容。是否可以将一些参数传递到dataUrl方法中?作为参数,我想从所选行$'grid'发送一些值。getRowDataid['colName']正确的数据格式将是{value:{1:'One',2:'Two'}}