返回修改后的数据集

本文关键字:数据集 修改 返回 | 更新日期: 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;
    }

当试图将1intValue转换为√ Yes-1转换为x No时,这是打破的。

错误是-

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

这可能吗?

返回修改后的数据集

您的列intValueInt32,因此您不能将其设置为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";
    }        
}