2013-04-07 12 views
5

Mam liczbę całkowitą przechowywaną w mojej bazie danych, którą muszę przekonwertować ciąg.Konwertowanie wartości Eval z int na string

To moja próba eval:

<%# ChangeSalaryType(Eval("SalaryType")) %> 

To moja próba na funkcję:

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; 
} 

Ale ja się tych błędów:

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 

mam użył "SalaryType" w Eval, ponieważ jest to parametr, który zawiera informacje z bazy danych. Nie jestem całkowicie pewien, t Robię źle ..

Odpowiedz

9

Mimo że wiesz, że pole SalaryType będzie int w twoim aspxie, zostanie ono obsadzone jako object po Eval(). Zrobić wyraźne obsady tak:

<%# ChangeSalaryType(Convert.ToInt32(Eval("SalaryType"))) %> 
1

nawracać do int na Eval części;

Convert.ToInt32(Eval("SalaryType")) 

Eval prawdopodobnie powrócić object jako typ zwracany.

0

wolę wysłać DataItem na kodzie tyłu, a tam dostać dane jak:

<%#RenderSalaryType(Container.DataItem)%> 

i na kodzie za

protected string RenderSalaryType(object oItem) 
{ 
    int salaryType = (int)DataBinder.Eval(oItem, "SalaryType"); 

    // rest of your code 
} 
Powiązane problemy