2014-08-27 39 views
1

我想创建optgroup dropdown,但我找不到应该从服务器发送什么数据以获得我想要的结果。jQuery jTable optgroup

JobsSelected: { 
    title: "Name", 
    edit: true, 
    create: true, 
    list: false, 
    inputClass: 'multiselect', 
    options: function (data) { 
     if (data.source == 'create') { 
      data.clearCache(); 
      return '/Jobs/Options'; 
     } 
    } 
}, 

这是JTable的代码,我调用服务器,并从我的数据库获取gruped的工作,并希望向他们展示的形式。

[HttpPost] 
public JsonResult Options() 
{ 
    var data = jobs.GroupBy(x => x.Department) 
        .Select(g => new { 
         DisplayText = g.Key, 
         Value = g.Select(i => new 
         { 
          DisplayText = i.Name, 
          Value = i.Sifra 
         }).ToList() 
        }).ToList(); 

    return data; 
} 

这是从服务器分组的数据。但它只是显示来自g.Key的值列表,我需要将其设置为optgroup。我不知道这是可能的吗?我怎样才能做到这一点?

+0

请将您的所有'Jobs'服务器部分添加 – 2014-08-27 07:51:27

回答

1

试图将您的值显示为jQuery jTable的下拉菜单的optgroup未实现。您只能显示由DisplayText字段和Value组成的项目。

如果您想这样做,请尝试自定义jTable插件,因为它在GitHub上可用。 这应该是_fillDropDownListWithOptions功能

0

slighly修改jquery.jtable.js以支持OptGroup值。

_fillDropDownListWithOptions: function ($select, options, value) { 
     $select.empty(); 
     for (var i = 0; i < options.length; i++) { 
      if (options[i].OptGroup) { 
       $('<optgroup />').attr('label', options[i].DisplayText) 
        .appendTo($select); 
      } else { 
       $('<option' + (options[i].Value == value ? ' selected="selected"' : '') + '>' + options[i].DisplayText + '</option>') 
        .val(options[i].Value) 
        .appendTo($select);     
      } 
     } 
    }, 

注意似乎没有关于optgroup嵌套的规范,因此只支持平面选项。