0

我有以下WebMethod-

[WebMethod]

public DataSet fillGridview(string sql)
{
    using (OdbcConnection cnn = new OdbcConnection(DBcon))
    {
        if (string.IsNullOrEmpty(sql))
        {
            sql = "statement";
        }



        OdbcDataAdapter da = new OdbcDataAdapter(sql, cnn);
        DataSet ds = new DataSet();
        da.Fill(ds, "DB.TABLE");

        char tick = (char)0x221A;
        char untick = (char)'x';
        int r = 0;
        foreach (DataRow row in ds.Tables[0].Rows)
        {

            if (ds.Tables[0].Rows[r]["intValue"].ToString() == "-1")
            {
                ds.Tables[0].Rows[r]["intValue"] = untick + " No";
            }
            else
            {
                ds.Tables[0].Rows[r]["intValue"] = tick + " Yes";
            }

            r = r + 1;

        }


        return ds;

    }

尝试将 of 转换为 或 时,intValue1√ Yes破坏性-1x No

错误是 -

输入字符串的格式不正确。无法在 intValue 列中存储 <√ Yes>。预期类型是 Int32。

这可能吗?

4

1 回答 1

0

您的列intValue是一个Int32,因此您无法将其设置为一个string值,这是您在foreach循环中尝试执行的操作。

在设置时,您不需要该int r = 0;变量来访问循环中的行,这将为您提供当前行。foreachDataRow row

如果您尝试将 GridView 上的列的值设置为新的字符串值,则可以使用GridView.RowDataBound事件根据隐藏列中的值设置一列的值。

或者,您可以将字符串列添加到 DataTable 并绑定到该列,见下文:

DataTable dt = ds.Tables[0];

dt.Columns.Add("TickedValue", typeof(String));

foreach (DataRow row in dt.Rows)
{

    if (row["intValue"].ToString() == "-1")
    {
        row["TickedValue"] = untick + " No";
    }
    else
    {
        row["TickedValue"] = tick + " Yes";
    }        
}
于 2013-02-27T15:54:46.377 回答