2012-10-05 21 views
8

He un objeto que contiene un campo llamado devlist que se define como esto¿Cómo llamar a un método de código subyacente desde la página aspx?

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

También he definido un método llamado DisplayListOfDevelopers que se supone para concatenar la lista de desarrolladores y mostrarlo como una una cuerda

Así es como estoy llamando al método desde aspx.

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

Pero, estoy recibiendo este error: El nombre 'devlist' no existe en el contexto actual

Me estoy perdiendo algo?

EDITAR

_gvStatus = ds; 
_gvStatus.DataBind(); 

Dónde ds es sólo una lista de objetos que contiene el devlist por ahora.

Gracias por ayudar a

+0

¿dónde definió la variable en su código detrás? – Shyju

+0

¿La propiedad DevList se ubica dentro de una clase que se conectó a la fuente de datos gridview/listview? – Silagy

+0

Ver la edición que acabo de agregar. – Richard77

Respuesta

12

Asumiendo que esto es la forma en que su clase se ve:

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

Y eso

ds = List<MyItem>(); 

Haga lo siguiente:

En su código subyacente:

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

En su margen de beneficio:

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

Sólo asegúrese de que la función en su código subyacente está protegido o público.

+0

Gracias. Está funcionando ahora. Sin embargo, escuché que Eval es malo para el rendimiento. – Richard77

+1

¿A diferencia de qué? ¿Y/o tienes una referencia? –

Cuestiones relacionadas