2013-04-07 51 views
5

我有一個存儲在我的數據庫中的整數,我需要轉換字符串。將Eval的值從int轉換爲字符串

這是我在評估和演示嘗試:

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

這是我在函數嘗試:

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

但我得到這些錯誤:

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 

我有在Eval中使用「SalaryType」,因爲這是從數據庫中獲取信息的參數。我並不完全確定wha t我做錯了..

回答

9

即使您知道在您的aspx中SalaryType字段將是int,但它將在Eval()之後投射爲object。做一個明確的轉換,像這樣:

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

嘗試轉換到int評估和演示一部分;

Convert.ToInt32(Eval("SalaryType")) 

Eval可能返回object作爲返回類型。

0

我更喜歡在代碼發送DataItem的背後,有得到的數據爲:

<%#RenderSalaryType(Container.DataItem)%> 

並在後面的代碼

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

    // rest of your code 
}