2010-12-14 65 views
0

Utilisation du panneau telerik BarComment obtenir la valeur parent dans cette situation (en utilisant Bar Panel Telerik)

Html.Telerik().PanelBar() 
    .Name("PanelBar") 
    .BindTo(Model, mappings => 
    { 
     mappings.For<Category>(binding => binding 
       .ItemDataBound((item, category) => 
       { 
        item.Text = category.CategoryName; 
       }) 
       .Children(category => category.Products)); 
     mappings.For<Product>(binding => binding 
       .ItemDataBound((item, product) => 
       { 
        item.Text = product.ProductName; 
       })); 
    }) 

http://www.telerik.com/help/aspnet-mvc/telerik-ui-components-panelbar-data-binding.html

Ce que je dois est de générer une URL basée sur categoryID et productID

ie:

.Children(category => category.Products)); 
    mappings.For<Product>(binding => binding 
      .ItemDataBound((item, product) => 
      { 
       item.Text = product.ProductName; 
       item.Url = (Get at the parent to get the categoryid somehow) + "/Details/" + product.productID; 
      })); 

Mais je ne peux pas figurer e comment je peux accéder à l'un des champs de la catégorie.

Et je ne peux pas obtenir du produit parce que ce sera un grand nombre, et je vais avoir product.Categories. méthodes LINQ

cheers

Répondre

0

Bien que je ne voulais pas, je réussi à stocker la valeur comme ceci:

mappings.For<Category>(binding => binding 
       .ItemDataBound((item, category) => 
       { 
        item.Text = category.CategoryName; 
        item.ActionName = category.CategoryID.ToString(); 
       }) 
       .Children(category => category.Products)); 
     mappings.For<Product>(binding => binding 
       .ItemDataBound((item, product) => 
       { 
        item.Text = product.ProductName; 
        item.Url = item.Parent.ActionName + "/Detail/" + product.ProductID; 
       })); 

Je me demande si quelqu'un se retrouve avec une solution plus propre