2008-11-13 48 views
9

Tôi đang sử dụng một điều khiển lặp và tôi đang cố gắng để vượt qua một tham số như vậy:Làm thế nào để bạn vượt qua một Container.DataItem như một tham số?

<%# SomeFunction(DataBinder.Eval(Container.DataItem, "Id")) %> 

Đó là cơ bản gọi:

public string SomeFunction(long id) { 

    return "Hello";   

} 

Tôi không thể đạt được điều này khi tôi nhận được lỗi:

lỗi CS1502: Đối sánh phương thức quá tải tốt nhất ... SomeFunction (id dài) ... có một số đối số không hợp lệ.

Bất kỳ ý tưởng nào?

Trả lời

10

Bạn cần phải đúc kết quả vào một dài, do đó:

<%# SomeFunction((long)DataBinder.Eval(Container.DataItem, "Id")) %> 

Cách khác là để làm một cái gì đó như thế này:

<%# SomeFunction(Container.DataItem) %> 

và ...

public string SomeFunction(object dataItem) { 
    var typedDataItem = (TYPED_DATA_ITEM_TYPE)dataItem; 

    // DO STUFF HERE WITH THE TYPED DATA ITEM 

    return "Hello";   

} 

Điều này ít nhất cho phép bạn làm việc với nhiều giá trị từ mục dữ liệu (DataRows, vv).

2

Tôi nghĩ bạn nên bỏ DataBinder.Eval (Container.DataItem, "Id") càng lâu.

0

Tôi đã sử dụng thành công này. Nguồn dữ liệu là một bộ sưu tập Danh sách.

OnClientClick='<%# "return myFunction(\""+ Container.DataItem + "\");" %>' 

và chức năng javascript ...

function myFunction(imgPath) 
{ 
    alert(imgPath); 
} 
Các vấn đề liên quan