2013-04-07 83 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 
}