我有以下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;
}
尝试将intValue
1
转换为√ Yes
或-1
至x No
时,这种情况正在中断。
错误是 -
输入字符串的格式不正确。无法存储<√是>在intValue列中。预期的类型是Int32。
这可能吗?
答案 0 :(得分:0)
您的专栏intValue
是Int32
,因此您无法将其设置为string
值,这是您在foreach
循环中尝试执行的操作。
在设置int r = 0;
时,您不需要foreach
变量来访问DataRow 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";
}
}