【问题标题】:Populate jqGrid dropdown using beforeShowForm Event使用 beforeShowForm 事件填充 jqGrid 下拉列表
【发布时间】:2011-05-25 12:26:41
【问题描述】:

当用户尝试在详细 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");
       }

   }

【问题讨论】:

    标签: javascript jqgrid


    【解决方案1】:

    在您的first question 中,我向您解释了如何使用dataUrl 动态生成下拉列表的包含。如果您使用form editing 修改网格数据,您可以使用beforeInitData 而不是beforeShowFormdataUrl 修改为'&lt;%= ResolveUrl("~/Admin/GetRoles/") %&gt;' + $("#list").jqGrid('selrow')之前 将填写表格。以您可以简化代码的方式,使ajax 请求异步,将值设置为下拉控件的问题将自动解决。

    【讨论】:

    • 谢谢奥列格。我会再次审查。
    • Oleg -- beforeInitData 起作用了!非常感谢您的帮助!!
    • Oleg,当下拉列表包含 > 300 个项目时,我在 Internet Explorer 8 中遇到性能问题。对此有何建议?
    • @dolphy:如果您可以发布完整的工作示例(包括相应的 JSON 数据,只是一个文本文件),我可以尝试帮助您。我想对于用户来说,从下拉列表中的这么多项目中进行选择也可能很困难。使用 jQuery UI autocomplete 小部件(参见jqueryui.com/demos/autocomplete)可以改善用户体验。
    • 好的...所以,我可以将 jQuery UI 自动完成绑定到 jqGrid 表单编辑中的文本字段,而不是使用下拉菜单?我会试试这个。好建议。
    猜你喜欢
    • 2014-12-18
    • 2012-11-07
    • 2016-05-12
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-17
    相关资源
    最近更新 更多