jqgrid动态更改搜索模式中的“下拉列选择”

时间:2018-02-23 11:47:46

标签: jqgrid free-jqgrid

我需要能够动态修改“div.searchFilter”>中创建的下拉列表“select.selectLabel”的内容。 “td.columns”。我需要的是在用户选择一些外部选项时添加或删除某些搜索列。

我知道这些选择基于colModel,并且每次用户添加新的搜索规则时都会重新创建它们。因此很难通过dataInit()函数更改它们,因为每次添加新规则时我的更改都会丢失。即使我发现像......这样的元素。

dataInit: function(elem) { $(elem).closest("td.data").siblings(".columns").find("select.selectLabel"); }

然后删除特定的<option>并添加新的,似乎没有效果。 我想知道是否有某种方法可以“告诉”searchpanel新的ColModel,但是 我不想改变网格,只需要改变搜索模式的列。

由于 (版本freejqgrid 4.13)

编辑1:要明确(Oleg的评论)...... 我使用的是datatype = ajax(服务器数据)。

我有一个常规的colModel,但是我想修改搜索面板下拉列表(组合框)来添加/删除一些字段,而不是改变网格colmodel。 我的意思是,添加/删除一些<option>(值和标签),并添加一些新的“伪字段”,这些新的“伪字段”不在前一个colModel中。

我尝试使用searchoptions.dataInit()函数来获取每个新规则(因此我可以访问相应的<select class="selectLabel">),但发现此函数不能轻松用于我的需求。

现在我正在尝试使用searchoptions.afterRedraw(),但我不确定这是否会对我有所帮助。

编辑2: 我有这个

colModel: [
    {name:"country", label:"Country", search:true},
    {name:"city", label:"City", search:true},
    {name:"zip", label:"Zip Code", search:true}
]

当用户打开搜索模式时,他将添加一个新规则,并从具有...的保管箱中选择该字段。

<select class="selectLabel">
    <option value="country">Country</option>
    <option value="city">City</option>
    <option value="zip">Zip Code</option>
</select>

然后,用户点击一个外部按钮,该按钮会触发一个事件,该事件将修改任何列Dropbox(现在或将来),这应该是......

<select class="selectLabel">
    <option value="country">Country</option>
    <option value="city">City</option>
    <option value="zip">Zip Code</option>
    <option value="phone1">Phone 1</option> //dynamically added
    <option value="phone2">Phone 2</option> //dynamically added
    <option value="phone3">Phone 3</option> //dynamically added
    //(and so on...)
</select>

这些新的伪字段(phone1,phone2 ...)在colModel中不存在,因为它们是由一些外部代码在thefly上创建的。

1 个答案:

答案 0 :(得分:1)

你没有发布我可以修改的演示。因此我只描述你能做什么。搜索jqGrid的对话框包含columns参数。 “搜索”对话框包含基于该选项的信息(如果存在)。如果该选项不存在,则将使用colModel的副本。因此,您可以使用所需的任何信息动态填充columns,搜索对话框将包含它。有关使用columns参数的代码示例,请查看the old answerthe demo