jqgrid动态更改“;下拉式列选择";搜索模式

jqgrid动态更改“;下拉式列选择";搜索模式,jqgrid,free-jqgrid,Jqgrid,Free Jqgrid,我需要能够动态修改中的下拉列表“select.selectLabel”的内容,这些内容是在“div.searchFilter”>“td.columns”中创建的。当用户选择一些外部选项时,我需要添加或删除某些搜索列 我知道这些选择是基于colModel的,每次用户添加新的搜索规则时都会重新创建这些选择。所以很难通过dataInit()函数修改它们,因为每次添加新规则时,我的更改都会丢失。就连我都觉得这个元素像 dataInit:函数(elem){ $(elem).最近的(“td.data”).同

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

我知道这些选择是基于colModel的,每次用户添加新的搜索规则时都会重新创建这些选择。所以很难通过dataInit()函数修改它们,因为每次添加新规则时,我的更改都会丢失。就连我都觉得这个元素像

dataInit:函数(elem){
$(elem).最近的(“td.data”).同级(.columns”).查找(“select.selectLabel”);
}

然后删除特定的
并添加新的,似乎没有效果。 我想知道是否有办法“告诉”搜索面板新的ColModel,但是 我不想更改网格,只想更改搜索模式的列

谢谢 (freejqgrid 4.13版)

编辑1:澄清(奥列格的评论)。。。 我使用的是datatype=ajax(服务器数据)

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

我尝试了searchoptions.dataInit()函数来获取每一条新规则(这样我就可以访问相应的
),但发现这个函数不容易满足我的需要

现在我正在尝试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(当前或未来),该列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>

国家
城市
邮政编码
电话1//动态添加
电话2//动态添加
电话3//动态添加
//(等等……)

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

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

我不确定是否正确理解了问题。您在jqGrid中使用哪种数据类型?您是否有本地数据?您能否提供2-3列和一些测试数据的小演示(例如,在JSFIDLE中),以演示问题。您是只想动态更改搜索对话框中显示的标签,还是想搜索数据中存在但在
colModel
中没有列的属性?大多数事情都是可能的,但我想确保我正确理解了您的需求。现在您可以刷新我的问题,编辑1&2我尝试了上半个小时的triying来编辑我的问题添加格式化代码,但Stackoverflow似乎不喜欢我的代码,拒绝了我的编辑。Oleg,您的答案是正确的,我将尝试使用“列”搜索选项中的参数。我不知道,每次我需要修改“columns”选项,而不是在grid init上。这可能吗?ThanksI仍然不知道如何修改列(或colModel)和更新所有过滤器下拉列表,因为$grid已经存在created@Aberel:您应该提供演示(例如在JSFIDLE中),演示您当前所做的工作。在我看到你的代码并重现你的问题后,我可以试着帮助你。@Abrel:看看演示。您会看到两个搜索按钮。两者都显示不同的标签。动态填充
参数最容易的方法是直接调用
searchGrid
,就像在演示的
onClickButton
回调中的代码一样。或者,您可以将
放在jqGrid的
搜索
参数中。您可以使用
var s=$(“#grid1”).jqGrid(“getGridParam”,“search”)
获取搜索参数并仅使用
s.columns=anotherArray
分配新的
列。所以我不确定你哪里有问题。