2014-08-27 40 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嵌套的規範,因此只支持平面選項。