2011-07-19 70 views
1

美好的一天!如何使用JQGrid中的columnchooser檢索列值?

我現在正在進行一個項目,我正在使用JQGrid顯示我的數據。作爲其功能的一部分,用戶可以選擇列並將這些列作爲其默認列。

我用'columnChooser'讓我的用戶選擇他們的默認列。

我現在的問題是,如何檢索用戶選擇的那些列?
以及如何將這些列設置爲其默認列?

有人可以幫我解決這個問題。

感謝

傑森

回答

3

用戶更改列布局,可以從電網獲得colModel,遍歷它推JSON對象的數組,那麼這將被髮送到在配置完成後服務器。以下代碼執行此操作:

function saveColumnConfiguration(grid, url) { 
    if (url.length > 0) { 
     var colArray = new Array(); 
     var colModel = grid[0].p.colModel; 
     for (var i = 0; i < colModel.length; i++) { 
      if (colModel[i].name != "rn" && colModel[i].name != "cb") { 
       colArray.push({ 
        Name: colModel[i].name, 
        Width: colModel[i].width, 
        Visible: !colModel[i].hidden 
       }); 
      } 
     } 
     $.ajax({ 
      url: url, 
      type: 'POST', 
      data: 'columnConfiguration=' + JSON.stringify(colArray) 
     }); 
    } 
} 

「rn」和「cb」的檢查表示不接受rownumber和複選框列。

UPDATE

您將需要一個類來表示的列:

[Serializable] 
public class JqGridColumn 
{ 
    public string Name { get; set; } 
    public int Width { get; set; } 
    public bool Visible { get; set; } 
} 

您還需要自定義模型粘合劑反序列化進入的列表:

​​

註冊模型粘合劑在應用開始時:

ModelBinders.Binders.Add(typeof(IEnumerable<JqGridColumn>), new JqGridConfigurationModelBinder()); 

控制器中的動作處理該列表將是這樣的:

public void SaveColumnConfiguration(IEnumerable<JqGridColumn> columnConfiguration) 
{ 
    // Save the list accordingly... 
} 

注意列的順序由它們在列表中的位置來表示。 然後,您可以輕鬆讀取此配置並呈現網格。

更新2

你的情況函數應該這樣調用

saveColumnConfiguration($("#freight_bill"), "/Controller/Action"); 

呼籲columnChooser後。您可以再拍按鈕保存更改,當用戶選擇這樣做,或處理從列選擇這樣的done事件:

$("#freight_bill").jqGrid('columnChooser', { 
    done: function (perm) { 
      if (perm) { 
       $("#freight_bill").jqGrid("remapColumns", perm, true, false); 
      } 
      saveColumnConfiguration($("#freight_bill"), "/Controller/Action"); 
     } 
}); 
+0

你好Shizik我曾嘗試你的代碼,它不工作:(有沒有任何其他方式來做到這一點? –

+0

我看到問題在asp.net mvc中被標記,如果是這種情況,您需要製作自定義模型綁定器來轉換傳入列表,我會相應地更新答案。 – shizik

+0

Hello Shizik,我添加ModelBinders.Binders.Add(typeof(IEnumerable ),new JqGridConfigurationModelBinder())時出現錯誤;我的全局文件Application_Start()下的 。 –

相關問題