2012-10-05 10 views
8

Ich habe ein Objekt, das ein Feld devlist genannt enthält, die wie diesesWie ruft man eine CodeBehind-Methode von aspx Seite?

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

auch eine Methode, die ich definiert DisplayListOfDevelopers genannt definiert ist, die die Liste der Entwickler soll und als eine Anzeige verketten eine Schnur.

So rufe ich die Methode von aspx.

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

Aber ich bekomme diese Fehlermeldung: Der Name ‚devlist‘ existiert nicht im aktuellen Kontext

ich etwas fehlte?

EDIT

_gvStatus = ds; 
_gvStatus.DataBind(); 

Wo ds nur eine Liste von Objekten, die die devlist jetzt enthält.

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

Und das

ds = List<MyItem>(); 

Tun Sie dies: Angenommen, dies ist, wie Sie Ihre Klasse sieht

Vielen Dank für

+0

wo haben Sie die Variable in Ihrem Codebehind definiert? – Shyju

+0

Sitzt die DevList-Eigenschaft innerhalb einer Klasse, die mit der Datenquelle gridview/listview verbunden ist? – Silagy

+0

Siehe bearbeiten, die ich einfach hinzufügen. – Richard77

Antwort

12

helfen

In Ihrem Code-Behind:

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

In Ihrem Markup:

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

Nur sicher sein, die Funktion in Ihrem machen Code-Behind oder öffentlich geschützt.

+0

Danke. Es funktioniert jetzt. Allerdings habe ich gehört, Eval ist schlecht für die Leistung. – Richard77

+1

Im Gegensatz zu was? Und/oder hast du eine Referenz? –