Alex Rivera | Logout

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

Asked 2008-11-13T16:11:14.683
9

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?

Edit
Report

1 Answer

11

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).

answered 2008-11-13T16:15:25.690

Your Answer