2016-08-08 20 views
0

Ich habe dynamische JQGrid in denen eine Spalte Spalte Datum ist. Ich bekomme die Daten von Feeds, die die URL und das Datum haben.Anzeige JqGrid Spalte modal als Datum und Hyper Link zeigt NAN/NAN/NAN

Ich muss Spaltenmodell für "Datumsspalte" so entwickeln, dass es den Link Datum und Hyper zeigt. Aber leider werden die Daten als NAN/NAN/NAN angezeigt (Dies könnte daran liegen, dass der gesamte String - <a>...</a> als Datum und nicht als "20/8/2016" behandelt wird). Kann mir bitte jemand mitteilen wie ich das Date hier im richtigen Text anzeigen kann statt NAN ??

Hinweis: Ich sollte auch darauf achten, dass der Zeitpunkt Sortierung beibehalten wird

Beispielcode Snippet, die arbeitet - Wenn es ist kein Anker-Tag & nicht arbeiten - wenn es a Anchor-Tag. Dies funktioniert jedoch unabhängig vom Anker-Tag immer dann, wenn das Spalten-Modal vom Typ Text ist - anders ausgedrückt, dies geschieht nur für Datumsspalten und nicht für andere Spalten.

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title></title> 
    <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.14/themes/base/jquery-ui.css" rel="stylesheet" /> 
    <link href="http://trirand.com/blog/jqgrid/themes/ui.jqgrid.css" rel="stylesheet" /> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
    <script src="http://trirand.com/blog/jqgrid/js/jquery.jqGrid.min.js"></script> 
    <script src="http://trirand.com/blog/jqgrid/js/i18n/grid.locale-en.js"></script> 
    <script type="text/javascript">   
     $(document).ready(function() { 

      var data = [{ 'Date': "<a href=https://google.com target=_blank style=text-decoration:underline;>20/8/2016</a>" }, 
       { 'Date': "<a href=https://google.com target=_blank style=text-decoration:underline;>21/8/2016</a>" }, 
       { 'Date': "<a href=https://google.com target=_blank style=text-decoration:underline;>22/8/2016</a>" }, 
       { 'Date': "2016-08-09T06:11:14.907Z" }, { 'Date': "2016-08-10T06:11:14.907Z" } 
      ] 
      $("#grid").jqGrid({ 
       datatype: 'jsonstring', 
       datastr: data, 
       colNames: ["Date"], 
       colModel: [{ name: 'Date', sorttype: 'date', formatter: 'date', formatoptions: {newformat:'n/j/Y'} }] 
      }); 
     }); 
    </script> 
</head> 
<body> 
    <table id="grid"></table> 
</body> 
</html> 

Antwort

0

jqGrid afterinsertrow Verwendung

var data = [{ 'Date': "20/8/2016" }, 
     { 'Date': "20/8/2016" }, 
     { 'Date': "20/8/2016" }, 
     { 'Date': "2016-08-09T06:11:14.907Z" }, 
     { 'Date': "2016-08-10T06:11:14.907Z" } 
] 
$("#grid").jqGrid({ 
    datatype: 'jsonstring', 
    datastr: data, 
    colNames: ["Date"], 
    colModel: [{ name: 'Date', sorttype: 'date', formatter: 'date', formatoptions: {newformat:'n/j/Y'} }], 
    **afterInsertRow : function(rowid, aData){ 
     if(rowid == 1){ 
      $("#grid").jqGrid('setCell' ,rowid, 'Date', "<a href=https://google.com target=_blank style=text-decoration:underline;>"+aData.Date+"</a>", {}); 
     } 
    }** 
}); 
+0

gibt es einen allgemeineren Weg. Dies wird beginnen, einen Hyperlink zu allen Zellen hinzuzufügen, wenn ich die if-Bedingung entferne. Ich denke, ich muss herausfinden, ob es eine Datumsspalte ist und die URL dann die If-Bedingung zu True machen. Gibt es einen Weg zur Identität, welche Art von Spalte es ist und dosiert dies den Hyperlink hat? –

0
colModel: [{ name: 'Date', sorttype: 'date', 
      formatter:function(cellvalue, options, rowObject)    { 
       var dt=new Date(cellvalue); 
       if(dt=='Invalid Date')return cellvalue;//chrome 
       var y=dt.getFullYear(); 
       var m=dt.getMonth()+1<10?'0'+(dt.getMonth()+1):dt.getMonth()+1; 
       var d=dt.getDate()<10:'0'+dt.getDate():dt.getDate(); 
       return y+'-'+m+'-'+d; 
      } 
       }] 
+0

Ich kann das nicht berücksichtigen, weil es das Format des Datums, das angezeigt werden soll, durcheinander bringt. nein Sortierung funktioniert auch nicht –

+1

Wenn Sie möchten, dass die Liste korrekt sortiert wird, müssen die Elemente das gleiche Format haben – lx1412

+0

Ihre Lösung funktioniert, aber es zeigt das Format in ISO an, da ich das Datum zur Anzeige angegeben habe ' n/j/Y '. Selbst das Sortieren funktioniert nicht richtig –