jqgrid - 使用带有dataUrl的searchoptions时未正确设置初始过滤器值

时间:2012-08-15 23:10:13

标签: search jqgrid data-url

我认为这是jqGrid中的一个错误(我使用的是4.4.0版本)。在我的colModel中,这很好用:

stype:'select', searchoptions: {sopt: ['eq','ne'], value:"Red:Red;Green:Green;Blue:Blue"}

但这不是:

stype:'select', searchoptions: {sopt: ['eq','ne'], dataUrl:'rest/selectcolors'};

dataUrl返回的位置

<option value='Red'>Red</option><option value='Green'>Green</option><option value='Blue'>Blue</option></select>

组合框中的颜色显示正常,默认值为“红色”但过滤器未正确初始化,除非用户通过选择“绿色”或“蓝色”更改组合框过滤器(然后可能返回并选择'红色')。如果用户尝试在未先更改组合框值的情况下进行过滤,则不会找到匹配项。初始使用过滤器对话框和重置过滤器对话框后会出现此问题,因此对用户来说非常混乱。

有没有人知道解决方法/修复此问题?

1 个答案:

答案 0 :(得分:0)

乍一看,您返回的dataurl没有

<select>

这可能是个错误

然而,我也有这个问题! 但我没有通过网络搜索找到任何解决方案。 我通过一个技巧临时解决这个问题 我添加一个值为= -1的选项和文本“请选择” 然后在更改事件中我删除此选项

searchoptions: {sopt: ['eq', 'ne'], dataUrl:'yoururl',              
                dataEvents:[{ type: 'change',
                        fn: function(e) 
                            {                    
                                $('td.data').find('option[value=-1]').remove();                                 
                            }                                
                }]},

但问题仍然存在..如果用户未更改组合框并选择“请选择”选项,他将看到错误。

我在php url中使用以下代码

echo "<select>";    
echo "<option value='-1'>please select</option>";     
while($row = pg_fetch_assoc($res)) 
{                        
    echo "<option value='".$row['cid']."' >".$row['cname']."</option>";                    
}    
echo"</select>"; 

您可以使用这样的样式,并在更改选择元素

后将其删除
  

风格='字体风格:斜体;颜色:灰色; width:100px'data-native-menu ='false'