2011-04-08 48 views
0

我的服务器提供了以下JSON字符串:如何获取ID属性自定义格式

{ 
    "total":3, 
    "page":1, 
    "records":52, 
    "rows":[ 
     {"cell":[ 
      "6789", 
      "Veridien Dynamics", 
      "ver01", 
      "Description of Site: ver01", 
      "1986a594-bb12-4a4a-a70b-4b85251fd268", 
      "UKSODMBHANU01", 
      6440], 
     "id":120} 
     ...... 
    ] 
} 

在我的网,我想有一个链接,每行。该链接是使用自定义格式化程序构建的。该链接的URL需要包含该id(例如120)。我无法从我的自定义格式化程序中获得cellvalue中的id值,选项或rowObject。由于id不是“单元格”的一部分,我不知道如何获得该值来构造url。

以下是我的网格定义的一部分:

$("#list").jqGrid({ 
    url:'http://mydomain:8080/myserver/api/v1/data-grid.json', 
    loadBeforeSend: function(xhr) { 
     xhr.setRequestHeader("Authorization",'Basic xxxxxxxxxxxxxxxxxxxxxxxxx'); 
     return xhr; 
    }, 
    datatype: "json", 
    jsonReader : { 
     root: "rows", 
     page: "page", 
     total: "total", 
     records: "records", 
     repeatitems: true, 
     cell: "cell", 
     id: "id" 
    }, 
    colNames:['Customer ID','Customer','Site ID','Site', 'Server ID','Server Name', 
       'XML Size','id'], 
    colModel :[ 
     {name:'customerID',editable:false}, 
     {name:'customerName',editable:false}, 
     {name:'siteID',editable:false,width:60, align:'center'}, 
     {name:'siteDescription',editable:false,align:'center'}, 
     {name:'serverID',editable:false,width:150,align:'right'},  
     {name:'serverName',editable:false, width:150,align:'right'}, 
     {name:'xmlSize',editable:false, align:'right'}, 
     {name:'id', index:'id', editable:false,  
      align:'center',formatter:that.xmlLinkFormatter}, 

    ], 
    ...... 
} 

以下是我xmlLinkFormatter,一切工作正常,如果我硬代码值这里的ID是targetURL的一部分。

xmlLinkFormatter:function(cellvalue, options, rowObject){ 
    var targetURL = "http://mydomain:8080/myServer/data/showXml/"+ 
        IwantIDValue here; 
    var link = "<a href='javascript: void(0)' onclick=\"window.open('" + 
       targetURL + "');\">View XML</a>"; 

    return link; 
} 

回答

0

我建议您使用unobtrusive JavaScript建立链接。因此,自定义格式可以很容易的:

xmlLinkFormatter:function(cellvalue, options, rowObject){ 
    return "<a href='#'>View XML</a>"; 
} 

现在包含“ID”列的将是相同的例子。要使'onclick'绑定,我建议使用jQuery.click

在jqGrid I中如何实现unobtrusive JavaScript的方式描述为herehere。所以我会用几乎相同的方式,将使用相同的简单的辅助功能getColumnIndexByName

loadComplete: function() { 
    var i=getColumnIndexByName(myGrid,'id'); 
    // nth-child need 1-based index so we use (i+1) below 
    $("tbody > tr.jqgrow > td:nth-child("+(i+1)+") > a",myGrid[0]).click(function(e){ 
     var tr=$(e.target,myGrid[0].rows).closest("tr.jqgrow"); 
     //alert("clicked the row with the id='"+tr[0].id+"'"); 
     e.preventDefault(); 
     window.open("http://mydomain:8080/myServer/data/showXml/"+ 
        encodeURIComponent(tr[0].id)); 
    }); 
} 

(这里的变量myGrid被定义为var myGrid=$("#list");) 你怎么能在现场演示here验证,该方法效果。

+0

谢谢你的帮助! – xueru 2011-04-08 22:53:15

相关问题