2012-10-05 15 views
8

Ho un oggetto che contiene un campo denominato DevList che è definito come questoCome chiamare un metodo code-behind dalla pagina aspx?

public List<string> DevList { get; set; } 

ho anche definito un metodo chiamato DisplayListOfDevelopers che si suppone per concatenare l'elenco degli sviluppatori e di visualizzarlo come una stringa

Questo è come sto chiamando il metodo da aspx.

<asp:TemplateField HeaderText = "Developer(s)"> 
<ItemTemplate> 
    <asp:Label 
     ID="_lblDevList" 
     runat="server" 
     Text= '<%# DisplayListOfDevelopers(DevList) %>'> 
    </asp:Label> 
</ItemTemplate> 
</asp:TemplateField> 

Ma, sto ottenendo questo errore: Il nome 'DevList' non esiste nel contesto attuale

mi sto perdendo qualcosa?

EDIT

_gvStatus = ds; 
_gvStatus.DataBind(); 

Dove ds è solo un elenco di oggetti che contiene il DevList per ora.

Grazie per l'aiuto

+0

dove hai definito la variabile nel codebehind? – Shyju

+0

La proprietà DevList si trova all'interno di una classe che si è connessa all'origine dati gridview/listview? – Silagy

+0

Vedi la modifica che ho appena aggiunto. – Richard77

risposta

12

Supponendo che questo è come il vostro classe appare:

public class MyItem 
{ 
    public List<string> DevList { get; set; } 
} 

E che

ds = List<MyItem>(); 

Fate questo:

Nel code-behind:

protected string DisplayListOfDevelopers(object _devList) 
{ 
    //Cast your dev list into the correct object 
} 

nel markup:

<asp:TemplateField HeaderText = "Developer(s)"> 
<ItemTemplate> 
    <asp:Label 
     ID="_lblDevList" 
     runat="server" 
     Text= '<%# DisplayListOfDevelopers(Eval("DevList")) %>'> 
    </asp:Label> 
</ItemTemplate> 
</asp:TemplateField> 

Basta essere sicuri di fare la funzione nel code-behind è protetto o pubblico.

+0

Grazie. Sta lavorando adesso. Tuttavia, ho sentito che Eval fa male alle prestazioni. – Richard77

+1

Al contrario di cosa? E/o hai un riferimento? –

Problemi correlati