2011-09-05 12 views
6

मेरे पास एक जेक्यूजीड है जिसमें 2 कॉलम हैं जहां मैं सर्वर पर जाऊंगा और कुछ डेटा प्राप्त करूंगा, फिर मैं सर्वर पर फ़िल्टर के आधार पर कुछ तारों को जोड़ दूंगा और इसे कैप्शन के रूप में सेट करना चाहता हूं और यह भी सेट करना चाहता हूं उन फ़िल्टरों के आधार पर कॉलम नाम बदलना चाहता है। क्या सर्वर से ActionResult के आधार पर कैप्शन और कॉलम नाम सेट करने का कोई तरीका है?JQGrid सेट कैप्शन और कॉलम नाम

उत्तर

12

मुझे आपका प्रश्न दिलचस्प लगता है।

हम सरल ग्रिड के साथ शुरू कर सकते हैं:

$("#list").jqGrid({ 
    url: 'ColumnNamesAndTitelFromServer.json', 
    datatype: 'json', 
    loadonce: true, 
    colNames: ['Name', 'Email'], 
    colModel: [ 
     {name: 'name', width: 100}, 
     {name: 'email', width: 150} 
    ], 
    rowNum: 5, 
    rowList: [5, 10, 20], 
    pager: '#pager', 
    gridview: true, 
    rownumbers: true, 
    sortname: 'name', 
    sortorder: 'asc', 
    caption: 'Just simple local grid', 
    height: 'auto' 
}); 

और JSON डेटा:

{ 
    "total": 1, 
    "page": 1, 
    "records": 2, 
    "rows": [ 
     {"id": "id1", "cell": ["John", "[email protected]"]}, 
     {"id": "id2", "cell": ["Michael", "[email protected]"]} 
    ] 
} 

हम निम्नलिखित परिणाम

प्राप्त होगा

enter image description here

(the demo देखें)

अब हम हमारे कस्टम अतिरिक्त जानकारी के साथ JSON डेटा का विस्तार:

{ 
    "total": 1, 
    "page": 1, 
    "records": 2, 
    "rows": [ 
     {"id": "id1", "cell": ["John", "[email protected]xample.com"]}, 
     {"id": "id2", "cell": ["Michael", "[email protected]"]} 
    ], 
    "userdata": { 
     "title": "Das ist der Titel bestimmt beim Server", 
     "columnNames": { 
      "name": "Die Name", 
      "email": "Die E-Mail" 
     } 
    } 
} 

उपरोक्त उदाहरण मैं सिर्फ शीर्षक और जर्मन भाषा में ग्रिड के स्तंभ नाम userdata में परिभाषित किया। पढ़ने के लिए और प्रयोग करने में userdata हम ग्रिड के लिए निम्न loadComplete ईवेंट हैंडलर जोड़ सकते हैं:

loadComplete: function() { 
    var $grid = $(this), columnNames, name, 
     userdata = $grid.jqGrid('getGridParam', 'userData'); 

    if (userdata) { 
     if (userdata.title) { 
      $grid.jqGrid('setCaption', userdata.title); 
     } 
     if (userdata.columnNames) { 
      columnNames = userdata.columnNames; 
      for (name in columnNames) { 
       if (columnNames.hasOwnProperty(name)) { 
        $grid.jqGrid('setLabel', name, columnNames[name]); 
       } 
      } 
     } 
    } 
} 

अब एक ही ग्रिड इच्छा

enter image description here

की तरह लग रहा है (देखें another demo)

+0

धन्यवाद यह पूरी तरह से – Leoadell

+0

@Leoadell काम किया: आपका स्वागत है! – Oleg

संबंधित मुद्दे