2011-09-14 4 views
2

J'essaie de configurer une grille maître/détail en utilisant le contrôle Grid des extensions Telerik pour ASP.NET MVC. Mon problème est la configuration du modèle de serveur.Problème Telerik Grid ServerTemplate

La démo que je suis est la première sur this page, sauf que j'utilise Razor View Engine.

J'ai la grille affichant bien. Le problème est que je ne peux pas écrire n'importe quel type de modèle de serveur qui ne lance pas une erreur de compilation - à part de le laisser vide!

@(Html.Telerik().Grid(Model) 
      .Name("Grid") 
      .Columns(columns => 
      { 
       columns.Bound(o => o.Date).Format("{0:MM/dd/yyyy}").Width(100); 
       columns.Bound(o => o.Title).Template(@<text> <a href="/Media/@item.Slug">@item.Title</a></text>).Sortable(false); 
       columns.Bound(o => o.Publication).Width(120).Sortable(false); 
      }) 
      .DetailView(detailView => detailView.Template(e => 
      { 
       //Anything other than this comment will throw a compiler error 
      })) 
      .RowAction(row => 
      { 
       // Expand initially the detail view of the first row 
       if (row.Index == 0) 
       { 
        row.DetailRow.Expanded = true; 
       } 
      }) 
      .Sortable() 
      .Scrollable(scrolling => scrolling.Height(494)).Footer(false) 
      .ClientEvents(events => events.OnRowDataBound("onRowDataBound")) 
     ) 

Voir ce commentaire "quoi que ce soit d'autre que ce commentaire ..."? Quand je remplace cela par quelque chose comme @<text> hello</text>, j'obtiens une erreur de compilation:

CS1002:;

Cela ne semble pas avoir de sens, mais je humour moi-même et mettre un point-virgule dans un tel @<text> hello</text>;. Cela me donne cette erreur:

CS0201: Seule la cession, appel, incrément, décrément, et de nouvelles expressions d'objets peuvent être utilisés comme une déclaration

Quand je remplace qu'avec une partie du modèle que je veux vraiment, à savoir @<text><b>Slug</b>: @item.Slug</text>, j'ai les mêmes erreurs; CS1002 sans point-virgule et CS0201 avec un point-virgule.

Qu'est-ce qui me manque ici?

Répondre

1

Il y a deux façons d'aborder cela. Si vous voulez juste afficher un texte simple et intégraient pas vraiment d'autres composants, il serait plus facile de modifier le code que vous avez ci-dessus pour tout faire:

.DetailView(detailView => detailView.Template(@<text>test</text>)) 

Comme vous pouvez le voir, je retiré l'ensemble e = > {...} partie et juste mettre @<text></text>.

Cependant, si vous voulez voir plus de composants dans votre vue détaillée, je pense qu'il serait préférable de regarder le demo found here. Bien que la description mentionne du code WebForms, vous n'avez pas besoin de vous inquiéter, le reste est dans Razor :) Il explique également les choses que vous devez garder à l'esprit. L'un des plus importants est que tous les composants dans le DetailTemplate devront utiliser {...} par opposition à (...) c'est parce que vous voulez appeler spécifiquement .Render(); (utiliser le (...) appelle implicitement .Render mais au mauvais endroit pour ces scénarios) à la fin de la déclaration de ces composants pour s'assurer qu'ils sont tous rendus correctement.

+0

Merci, c'est ce dont j'avais besoin! Ma syntaxe était incorrecte. +1 – splatto