2012-10-05 36 views
8

Tôi đã một đối tượng có chứa một lĩnh vực được gọi DevList được định nghĩa như thế nàyLàm thế nào để gọi một phương pháp mã-đằng sau từ trang aspx?

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

tôi cũng xác định một phương pháp gọi là DisplayListOfDevelopers đó là nghĩa vụ để nối danh sách các nhà phát triển và hiển thị nó như là một một chuỗi.

Đây là cách tôi gọi phương thức từ aspx.

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

Nhưng, tôi nhận được lỗi này: Tên 'DevList' không tồn tại trong bối cảnh hiện nay

Tôi có thiếu cái gì?

EDIT

_gvStatus = ds; 
_gvStatus.DataBind(); 

đâu ds chỉ là một danh sách các đối tượng có chứa các DevList cho bây giờ.

Cảm ơn vì đã giúp

+0

bạn đã xác định biến trong codebehind ở đâu? – Shyju

+0

Thuộc tính DevList có nằm trong một lớp kết nối với nguồn dữ liệu Gridview/listview không? – Silagy

+0

Xem chỉnh sửa mà tôi vừa thêm. – Richard77

Trả lời

12

Giả sử đây là cách lớp học của bạn trông:

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

Và đó

ds = List<MyItem>(); 

Làm điều này:

Trong bạn code-behind:

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

Trong đánh dấu của bạn:

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

Chỉ cần chắc chắn để làm cho các chức năng trong bạn code-behind được bảo vệ hoặc của cộng đồng.

+0

Cảm ơn. Nó đang làm việc bây giờ. Tuy nhiên, tôi nghe nói Eval là xấu cho hiệu suất. – Richard77

+1

Trái ngược với những gì? Và/hoặc bạn có một tài liệu tham khảo? –

Các vấn đề liên quan