Telerik grid ClientTemplate
Ich versuche C# zu übernehmen, ein bisschen Logik bei der Anzeige von Datum /Uhrzeit in einem telerik grid in meiner MVC Anwendung, aber ich habe einige Mühe, es funktioniert. Mein erstes problem ist, dass ich nicht verstehe, wie genau die ClientTemplate Aufruf funktioniert. Ich war nicht in der Lage zu finden, die Dokumentation welche erklären, wie es funktioniert, entweder. Also eine Erklärung wie das funktioniert wäre hilfreich, und dann vielleicht konkret, was stimmt nicht mit meinem Beispiel:
columns.Bound(p => p.SetupDate).ClientTemplate("<#= SetupDate == DateTime.Min || SetupDate == null ? string.empty : SetupDate #>")
UPDATE:
Ging ich mit Daniel ' s Vorschlag. Ich habe gerade diese Funktion aufrufen, von ClientTemplate(). Hier ist der Letzte code:
//Setup a minDate to mimic C#'s Date.MinDate constant.
var minDate = new Date();
minDate.setFullYear(1, 0, 1);
minDate.setHours(0, 0, 0, 0);
function checkDateWithFormat(d, f)
{
if (d.getTime() == minDate.getTime())
{
return "";
}
else
{
return d.toString(f);
}
}
Ich glaube nicht, können Sie fügen Sie Logik wie der, in der client-Vorlage. Sie wollen, um die Logik in Ihrem Modell.
Wie ich es verstehe, wenn ich lege, dass die Logik im Modell (D. H., um eine leere Zeichenfolge zurück, in einigen Fällen, in dem Fall würde ich es mit einem string-Typ statt einem DateTime-Typ in das Gitter), dann die Sortierung würde nicht richtig funktionieren. Das ist wirklich das ganze problem, das ich zu lösen versuche hier. Alle Vorschläge sind willkommen.
Wenn die Sortierung ist das eigentliche Problem, würde ich wahrscheinlich eine andere Eigenschaft zu Sortieren, indem Sie in das Modell, vielleicht ein int, und verwenden Sie die SetUpDate, um Sie aufzufüllen. Dann könnten Sie formatieren Sie Ihre Daten wie Zeichenfolgen für die gewünschten anzeigen und nicht verlieren die Fähigkeit zu halten die Liste korrekt sortiert
Wie ich es verstehe, wenn ich lege, dass die Logik im Modell (D. H., um eine leere Zeichenfolge zurück, in einigen Fällen, in dem Fall würde ich es mit einem string-Typ statt einem DateTime-Typ in das Gitter), dann die Sortierung würde nicht richtig funktionieren. Das ist wirklich das ganze problem, das ich zu lösen versuche hier. Alle Vorschläge sind willkommen.
Wenn die Sortierung ist das eigentliche Problem, würde ich wahrscheinlich eine andere Eigenschaft zu Sortieren, indem Sie in das Modell, vielleicht ein int, und verwenden Sie die SetUpDate, um Sie aufzufüllen. Dann könnten Sie formatieren Sie Ihre Daten wie Zeichenfolgen für die gewünschten anzeigen und nicht verlieren die Fähigkeit zu halten die Liste korrekt sortiert
InformationsquelleAutor birdus | 2012-07-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zuerst möchten Sie vielleicht, um sicherzustellen, SetupDate läuft von selbst. Wenn es funktioniert, können Sie versuchen, das hinzufügen von Klammern.
Oder Sie können versuchen, verwenden Sie eine if-Anweisung.
Update
Die Antwort von NullReference ist rechts, wo es heißt, dass man nicht mit c# in der ClientTemplate. So kann man nicht mit DateTime.Min oder string.Leer.
Einen Weg, das gleiche zu erreichen, ist die Verwendung einer javascript-Funktion. Definieren Sie die Spalte wie folgt:
Dann fügen Sie die javascript-Funktion checkDate(). (Kann es einen besseren Weg zu finden, der min-Wert, aber getMilliseconds sollte 0 sein, wenn es ein Wert min.)
Obwohl ich nicht verwenden Sie Ihre genauen code, ich habe Ihre Idee. Ich werde nach den letzten code oben in der Frage. Danke!
Das sieht aus wie ein guter Weg, es zu tun. Ich mag, wie du das format für das Datum in der Funktion.
InformationsquelleAutor Daniel
Client-side-templates ausgeführt werden auf dem client in javascript, so dass Sie nicht verwenden können, C#. Alles umgeben von der "<# #>" entsprechen Eigenschaften für Ihr Modell. Ich habe festgestellt, der beste Ort, um diese Sachen heraus zu betrachten, Telerik demo-Seiten hier.
bedeutet nicht, dass es auf dem server ausgeführt. Das war die Art und Weise mit asp.net aber das ist rein client-Seite verbindlich.
InformationsquelleAutor NullReference
Kunden-Template wird javascript-code, der ausgeführt wird, auf client-und Ergebnis es wird umgewandelt in string und verwendet diesen Ort. Man kann also nicht string verwenden.Leere in Ihrem ClientTemplate und sollten " statt.
InformationsquelleAutor Kirill Bestemyanov
Ich würde definieren, noch ein paar Eigenschaften auf das Modell zu machen, die ClientTemplate cleaner:
Dann ClientTemplate sieht so aus:
.ClientTemplate("<#=HasSetupDate ? SetupDate_Str : "# " >"")
Ich glaube, Sie irren über Sortier-Problem. ClientTemplate dient zur Anzeige von Daten nur. Auf der Spalten-definition binden Sie es zu einer Eigenschaft (hier ist es .BindTo(m => m ist.SetupDate) ), und diese Eigenschaft wird verwendet, um eine Tabelle Sortieren. Mehr über die Sortierung geschieht auf server-Seite (eine Ajax-Anfrage abgesetzt wird, und die Tabelle wird aktualisiert mit neuen Daten).
InformationsquelleAutor Rustam