2008-11-07 6 views
0

J'ai un objet qui retourne un IList que je reçois de mon ObjectDataSource et se lier à un Gridview. Tout fonctionne très bien si je viens d'utiliser la liaison standard, mais je suis en train de personnaliser ma fixation pour définir les propriétés sur un linkbutton comme suit:ne peut pas lancer DataItem à DataRowView dans le scénario de reliure personnalisée

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
     { 
      if (e.Row.RowType == DataControlRowType.DataRow) 
      { 
       // extract the link button 
       LinkButton lnkViewMap = (LinkButton)e.Row.FindControl("lnkViewMap"); 

       // grab the datarowview 
       System.Data.DataRowView row = (System.Data.DataRowView)e.Row.DataItem; 

       // set the onclientclick to fire our showMap javascript function, 
       // passing through the lat/longs 
       lnkViewMap.OnClientClick = string.Format("showMap({0}, {1}); return false;", row["Lat"], row["Long"]); 
      } 
     } 

Mon erreur se produit où je suis la coulée e.Row.DataItem à une DataRowView. Le code ci-dessus est de blogue impressionnant de Matt Berseth sur Virtual Earth ... qui est ce que je suis en train de mettre en œuvre ici. Des idées?

Répondre

2

Définir un point d'arrêt dans le débogueur et voir quel type e.Row.DataItem est en réalité.

Il ne serait qu'un DataRowView si le DataSource vous définissez sur la grille est un DataView ou DataTable. Sinon, ce serait le type d'élément de la collection.

+0

Ça l'a fait ... J'ai jeté le DataItem à mon type d'élément, puis j'ai accédé à ses propriétés en utilisant la notation normale et cela a fonctionné ... merci! – Webjedi

+0

NP .. plus qui est beaucoup mieux que de déconner avec DataRowViews! Liaison de données fortement typée FTW. – Brannon