2008-11-13 17 views
9

Tekrarlayıcı kontrolü kullanıyorum ve şu şekilde bir parametre iletmeye çalışıyorum: Bir Container.DataItem parametresini nasıl geçirirsiniz?

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

Temelde şöyle diyor:

public string SomeFunction(long id) { 

    return "Hello";   

} 

Bunu elde edemiyorum hata:

hatası CS1502: En iyi aşırı yüklenmiş yöntem eşleştirmesi ... Bazı işlevler (uzun kimlik) ... geçersiz bir argümanı var.

Herhangi bir fikir?

cevap

10

Çok uzun bir sonucu döküm gerekir:

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

alternatif böyle bir şey yapmaktır:

<%# SomeFunction(Container.DataItem) %> 

ve ...

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

    // DO STUFF HERE WITH THE TYPED DATA ITEM 

    return "Hello";   

} 

Bu en azından veri öğesinden (DataRows vb.) Birden çok değerle çalışmanıza izin verir.

2

DataBinder.Eval (Container.DataItem, "Id") uzun süreliğine vermelisiniz.

0

Bunu başarı ile kullandım. Veri kaynağı bir Liste koleksiyonudur.

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

ve javascript fonksiyonu

...

function myFunction(imgPath) 
{ 
    alert(imgPath); 
} 
İlgili konular