Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you pass a Container.DataItem as a parameter?

Tags:

c#

asp.net

I'm using a repeater control and I'm trying to pass a parameter as such:

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

It's basically calling:

public string SomeFunction(long id) {

    return "Hello";        

}

I'm not able to achieve this as I get an error:

error CS1502: The best overloaded method match ... SomeFunction(long id) ... has some invalid arguments.

Any ideas?

like image 849
Brian Liang Avatar asked Nov 13 '08 16:11

Brian Liang


Video Answer


2 Answers

You need to cast the result to a long, so:

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

The alternative is to do something like this:

<%# SomeFunction(Container.DataItem) %>

and...

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

    // DO STUFF HERE WITH THE TYPED DATA ITEM

    return "Hello";        

}

This at least allows you to work with multiple values from the data item (DataRows etc).

like image 96
Kieron Avatar answered Sep 20 '22 01:09

Kieron


I used this with success. The data source is a List collection.

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

and the javascript function...

function myFunction(imgPath)
{
    alert(imgPath);
}
like image 25
Michael Avatar answered Sep 24 '22 01:09

Michael