Domanda

This is my transformation function call:

<p><%# MyFunctions.getDocumentCategory(Eval("DocumentID"))%></p>

This is the function:

public static string getDocumentCategory(int documentID)
{

    string category;

    StringBuilder sb = new StringBuilder();
    // Get document categories 
    var ds = CategoryInfoProvider.GetDocumentCategories(documentID, "CategoryEnabled = 1", null);
    // Check whether exists at least one category
    if (!DataHelper.DataSourceIsEmpty(ds))
    {

        // Loop thru all categories
        foreach (DataRow dr in ds.Tables[0].Rows)
        {
            sb.Append(Convert.ToString(dr["CategoryDisplayName"]) + ",");
        }
    }
    string content = sb.ToString();

    category = content.Split(',')[0];

    return category;
}
}

This is the error:

MyFunctions.getDocumentCategory(int) has some invalid arguments. 

I've tried an alternate form of the function that accepts strings rather than ints but it throws the same error. I've verified that the Eval("DocumentID") works correctly when placed by itself. Any ideas?

È stato utile?

Soluzione

Eval returns an object. You either need to convert it to an int, or change the function to accept an object, and convert that object to an int.

<p><%# MyFunctions.getDocumentCategory( Convert.ToInt32( Eval("DocumentID") ) )%></p>

OR

public static string getDocumentCategory(object document)
{
     int documentID = Convert.ToInt32( document );

     etc...
}

Altri suggerimenti

Thanks to Doozer for the nice explanation and example.

The second approach - to accept the object and make the conversion inside your custom function - may be better to keep the transformation code cleaner. The result is equal.

Just to add a little bit - you can use Kentico's ValidationHelper for conversions, for example:

transformation:

<%# MyFunctions.getDocumentCategory(Eval("DocumentID"))%>

code:

public static string getDocumentCategory(object docID)
{
   int documentID = ValidationHelper.GetInteger(docID, 0); //0 is the default value
   ...
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top