Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.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
Jquery 如何显示";选择";JQGrid中的元素,当不处于编辑模式时?_Jquery_Jqgrid - Fatal编程技术网

Jquery 如何显示";选择";JQGrid中的元素,当不处于编辑模式时?

Jquery 如何显示";选择";JQGrid中的元素,当不处于编辑模式时?,jquery,jqgrid,Jquery,Jqgrid,我知道有editype=“select”选项,但是,为了查看select,用户必须启动编辑 相反,我只希望下拉列表在默认情况下显示在单元格中,而无需用户开始编辑 我所尝试的: html由jQGrid AJAX调用的PHP函数返回: <cell><select><option>Test</option></select></cell> 测试 我将列的格式化程序设置为“选择” 如何实现这一点?是的,您可以使用列模型中的自定义

我知道有
editype=“select”
选项,但是,为了查看select,用户必须启动编辑

相反,我只希望下拉列表在默认情况下显示在单元格中,而无需用户开始编辑

我所尝试的: html由jQGrid AJAX调用的PHP函数返回:

<cell><select><option>Test</option></select></cell>
测试
我将列的格式化程序设置为“选择”


如何实现这一点?

是的,您可以使用列模型中的
自定义fortmatter
实现这一点

{
name: 'MyCol', index: 'MyCol', formatter: customSelectboxRenderer
}
然后

函数customSelectboxRenderer(单元格值、选项、行对象){
返回“…”//可以从某些本地数组准备选项
}

假设你的意思是

<cell><select><option>Test</option></select></cell>
测试
是为相关单元格返回的响应

我认为您只需要去掉单元格标记,然后从您自己的自定义格式化程序返回它 差不多

function customFormatter(cellValue, opts, rowObject){
   // Assuming that cellValue is <cell><select><option>Test</option></select></cell>

  return cellValue.replace(blah);
}
函数customFormatter(cellValue、opts、rowObject){
//假设cellValue是Test
返回单元格值。替换(blah);
}
或者,如果您可以更改服务器为单元格返回的值,那么我将尝试在没有格式化程序的情况下查看该值是否有效,如果不行,您将希望创建一个返回单元格值的自定义格式化程序

function customFormatter(cellValue, opts, rowObject){
  // Assuming that cellValue is <select><option>Test</option></select>
  return cellValue;
}
函数customFormatter(cellValue、opts、rowObject){
//假设cellValue是Test
返回单元格值;
}

如果我的假设不正确,请澄清

我做了我一生中做过的最偷偷摸摸的事:
我将服务器端数据中的“”字符改为

这样,当jqgrid接收到数据时,数据就不会被去除标签。
然后,我制作了一个自定义格式化程序,它用实际字符替换html代码,从而正确显示数据

formatter: function(cellvalue, options, rowObject){ return cellvalue.replace("&lt;","<").replace("&gt;",">"); } 
formatter:function(cellvalue,options,rowObject){返回cellvalue.replace(“,”);}

轰!完成交易。

如果html已经写入JQGrid,我只想让它显示为Select,该怎么办?@V0R73X,您不能简单地将html更改为Select框。jQgrid提供对渲染单元的完全控制。请使用它,而不是显示文本,然后转换为selct:),但我的数据在初始ajax请求期间已被提取,使用自定义格式设置程序将意味着选择框的另一个ajax请求,这是无效的。@V0R73X,在发出初始请求时,将这些选项数据保存在本地阵列中,并使用itI怀疑是否可行,取决于调用自定义格式化程序的时间:在GridComplete之后或之前请添加您尝试过的代码。我只需将select元素打印到grid@V0R73X如果网格没有显示
选择
框,它会显示什么?不清楚下面的意思html是从JQGrid-ajax调用的PHP函数返回的“。您当前是否使用
editoptions.dataUrl
?它将仅在编辑期间使用。如果需要加载某些列的选项列表,则必须扩展主响应,该响应将选项列表填充到网格中。我的意思是在处理之前使用
,或者你应该提供你所做的更多细节。例如,
cloModel
中要放置
的列的定义。我们需要更多关于加载select时使用的Ajax调用的信息。在列的所有单元格中,select的选项列表是否相同?如果用户更改一个单元格中的选项,您需要做什么?这不起作用,因为在ajax调用填充数据之前调用了formatter函数。我对它进行了测试以进行验证。数据中的每一行都会调用formatter函数。我以前用过这种技术。我认为现在的情况是,您没有使用local/json作为数据源,而是表已经标记好,并且您正在向其中添加jqgrid,对吗?单元格值是去掉所有html标记的数据。例如,对于上面的例子,这只是测试。
formatter: function(cellvalue, options, rowObject){ return cellvalue.replace("&lt;","<").replace("&gt;",">"); }