2013-04-07 8 views
5

Ich habe eine ganze Zahl in meiner Datenbank gespeichert, die ich Zeichenfolge konvertieren muss.Konvertieren von Wert eines Eval von int in Zeichenfolge

Dies ist mein Versuch am Eval:

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

Dies ist mein Versuch, die Funktion:

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

Aber ich diese Fehler bin immer:

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 

Ich habe "SalaryType" im Eval verwendet, da dies der Parameter ist, der die Informationen aus der Datenbank enthält. Ich bin mir nicht ganz sicher, wha t Ich mache falsch ..

Antwort

9

Obwohl Sie wissen, dass das SalaryType Feld wird ein int in Ihrem aspx wird es als object nach dem Eval() gegossen werden. Führen Sie eine explizite Umwandlung in etwa so:

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

Versuchen Sie int auf Ihrem Eval Teil zu konvertieren;

Convert.ToInt32(Eval("SalaryType")) 

Eval wahrscheinlich object als Rückgabetyp zurück.

0

Ich ziehe den DataItem auf Code-behind zu schicken, und dort die Daten als:

<%#RenderSalaryType(Container.DataItem)%> 

und Code hinter

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

    // rest of your code 
} 
Verwandte Themen