7

文字列を変換する必要がある整数がデータベースに格納されています。

これは評価での私の試みです:

<%# 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」を使用しました。これは、データベースからの情報を含むパラメーターであるためです。何が間違っているのか完全にはわかりません..

4

3 に答える 3

11

SalaryTypeフィールドがintaspx になることがわかっていてもobject、Eval() の後にキャストされます。次のように明示的なキャストを行います。

<%# ChangeSalaryType(Convert.ToInt32(Eval("SalaryType"))) %>
于 2013-04-07T15:21:12.697 に答える
1

Eval部分に変換してみてくださいint

Convert.ToInt32(Eval("SalaryType"))

Evalおそらく戻りobject値の型として返されます。

于 2013-04-07T15:22:07.007 に答える
0

コードビハインドで DataItem を送信することを好み、データを次のように取得します。

<%#RenderSalaryType(Container.DataItem)%>

そしてコードビハインドについて

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

    // rest of your code
}
于 2013-04-07T15:35:17.620 に答える