我有下面的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时,这种情况就会中断。
错误是-
输入字符串的格式不正确。无法将< Yes>存储在intValue列中。预期类型为Int32。
这个是可能的吗?
发布于 2013-02-27 15:54:46
列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";
}
}https://stackoverflow.com/questions/15116285
复制相似问题