1
美好的一天!如何使用JQGrid中的columnchooser檢索列值?
我現在正在進行一個項目,我正在使用JQGrid顯示我的數據。作爲其功能的一部分,用戶可以選擇列並將這些列作爲其默認列。
我用'columnChooser'讓我的用戶選擇他們的默認列。
我現在的問題是,如何檢索用戶選擇的那些列?
以及如何將這些列設置爲其默認列?
有人可以幫我解決這個問題。
感謝
傑森
美好的一天!如何使用JQGrid中的columnchooser檢索列值?
我現在正在進行一個項目,我正在使用JQGrid顯示我的數據。作爲其功能的一部分,用戶可以選擇列並將這些列作爲其默認列。
我用'columnChooser'讓我的用戶選擇他們的默認列。
我現在的問題是,如何檢索用戶選擇的那些列?
以及如何將這些列設置爲其默認列?
有人可以幫我解決這個問題。
感謝
傑森
用戶更改列布局,可以從電網獲得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");
}
});
你好Shizik我曾嘗試你的代碼,它不工作:(有沒有任何其他方式來做到這一點? –
我看到問題在asp.net mvc中被標記,如果是這種情況,您需要製作自定義模型綁定器來轉換傳入列表,我會相應地更新答案。 – shizik
Hello Shizik,我添加ModelBinders.Binders.Add(typeof(IEnumerable),new JqGridConfigurationModelBinder())時出現錯誤;我的全局文件Application_Start()下的 。 –