Javascript 使用beforeShowForm事件填充jqGrid下拉列表

Javascript 使用beforeShowForm事件填充jqGrid下拉列表,javascript,jqgrid,Javascript,Jqgrid,当用户试图在细节jqGrid中添加新记录时,我尝试动态填充下拉列表。这是我到目前为止所拥有的。它可以很好地拉入数据,但它不会将值设置为下拉列表。任何帮助都将不胜感激 beforeShowForm: function(formid) { var sr = $("#list").jqGrid('selrow'); if (sr) { // get data from master var UserID = $("#list").

当用户试图在细节jqGrid中添加新记录时,我尝试动态填充下拉列表。这是我到目前为止所拥有的。它可以很好地拉入数据,但它不会将值设置为下拉列表。任何帮助都将不胜感激

beforeShowForm: function(formid) {
       var sr = $("#list").jqGrid('selrow');
       if (sr) {
           // get data from master
           var UserID = $("#list").getGridParam('selrow');
           var roles = $.ajax({ type: "POST",
               url: '<%= ResolveUrl("~/Admin/GetRoles/") %>' + UserID,
               dataType: "json",
               async: false,
               success: function(data) {

               }
           }).responseText;

           // set the field in detail with the value of mnaster
           $("#UserID", formid).val(UserID);
  // try and populate dropdown
           $('#detail').setColProp('Description', { editoptions: { value: roles} });
       } else {
           // close the add dialog
           alert("no row is selected");
       }

   }
beforeShowForm:函数(formid){
var sr=$(“#list”).jqGrid('selrow');
if(sr){
//从主机获取数据
var UserID=$(“#list”).getGridParam('selrow');
var roles=$.ajax({type:“POST”,
url:''+用户ID,
数据类型:“json”,
async:false,
成功:功能(数据){
}
}).responseText;
//使用mnaster值详细设置字段
$(“#UserID”,formid).val(UserID);
//尝试填充下拉列表
$('#detail').setColProp('Description',{editoptions:{value:roles}});
}否则{
//关闭“添加”对话框
警报(“未选择任何行”);
}
}

在您的中,我解释了如何使用
dataUrl
动态生成下拉列表的内容。如果使用修改网格数据,则可以使用
beforeInitData
而不是
beforeShowForm
dataUrl
修改为
'+$(“#列表”)。jqGrid('selrow')
之前填写表单。通过简化代码的方式,使
ajax
请求异步,将值设置为下拉控件的问题将自动得到解决。

谢谢你。我将再次回顾一下。Oleg——beforeInitData有效!非常感谢你的帮助!!Oleg,当Internet Explorer 8的下拉列表包含>300项时,我遇到了性能问题。有什么建议吗?@dolphy:如果你能发布完整的工作示例(包括相应的JSON数据,只是一个文本文件),重现这个问题,我可以尝试帮助你。我想,对于用户来说,从下拉列表中的这么多项目中进行选择也很困难。使用jQueryUIAutoComplete小部件(请参阅)可以改善用户体验。好吧……那么,我可以将jQueryUIAutoComplete绑定到jqGrid表单编辑中的文本字段,而不是使用下拉菜单?我会试试这个。好建议。