Conversione del valore di un Eval da int a stringa

Ho un intero memorizzato nel mio database che ho bisogno di convertire una stringa.

Questo è il mio tentativo all’Eval:

 

Questo è il mio tentativo per la funzione:

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

Ma sto ricevendo questi errori:

 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 

Ho usato “SalaryType” nell’Eval perché questo è il parametro che contiene le informazioni dal database. Non sono completamente sicuro di cosa sto facendo male …

Anche se sai che il campo SalaryType sarà un int nel tuo aspx, verrà lanciato come object dopo Eval (). Fai un cast esplicito in questo modo:

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

Prova a convertire in int sulla tua parte Eval ;

 Convert.ToInt32(Eval("SalaryType")) 

Eval probabilmente restituisce l’ object come tipo di ritorno.

Preferisco inviare DataItem sul codice e ottenere i dati come:

 <%#RenderSalaryType(Container.DataItem)%> 

e sul codice dietro

 protected string RenderSalaryType(object oItem) { int salaryType = (int)DataBinder.Eval(oItem, "SalaryType"); // rest of your code }