返回修改后的数据集
本文关键字:数据集 修改 返回 | 更新日期: 2023-09-27 18:01:19
我有以下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;
}
当试图将1
的intValue
转换为√ Yes
或-1
转换为x No
时,这是打破的。
错误是-
输入字符串格式不正确。无法在intValue列中存储<√Yes>。期望类型为Int32
这可能吗?
您的列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";
}
}