I have an integer stored in my database that I need to convert string.
This is my attempt at the Eval:
<%# ChangeSalaryType(Eval("SalaryType")) %>
This is my attempt at the function:
public static string ChangeSalaryType(int salaryType)
{
string salaryTime = string.Empty;
if (salaryType == 1)
{
salaryTime = "per hour";
}
else if (salaryType == 2)
{
salaryTime = "per week";
}
else if (salaryType == 3)
{
salaryTime = "per annum";
}
return salaryTime;
}
But I am getting these errors:
Argument 1: cannot convert from 'object' to 'int' Error 2 The best overloaded method match for 'controls_allPlacements.ChangeSalaryType(int)' has some invalid arguments Error 4 The best overloaded method match for 'controls_allPlacements.ChangeSalaryType(int)' has some invalid arguments
I have used “SalaryType” in the Eval as that is the parameter that has the information from the database in. I’m not completetly sure what I am doing wrong..
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
Even though you know that the SalaryType field will be an int in your aspx it will be cast as object after the Eval(). Do an explicit cast like so:
<%# ChangeSalaryType(Convert.ToInt32(Eval("SalaryType"))) %>
Method 2
Try to convert to int on your Eval part;
Convert.ToInt32(Eval("SalaryType"))
Eval probably return object as a return type.
Method 3
I prefer to send the DataItem on code behind, and there get the data as:
<%#RenderSalaryType(Container.DataItem)%>
and on code behind
protected string RenderSalaryType(object oItem)
{
int salaryType = (int)DataBinder.Eval(oItem, "SalaryType");
// rest of your code
}
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0