2013-04-07 18 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"をデータベースの情報を持つパラメータとして使用しました。私は完全にはわからないtは私は)あなたがSalaryTypeフィールドは、それが評価(後objectとしてキャストされますあなたのaspxでintになることを知っているにもかかわらず、間違った..

答えて

9

をしています。そのような明示的なキャストを実行します。

<%# 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 
} 
背後にあるコードで
関連する問題