簡體   English   中英

返回修改后的數據集

[英]Return modified DataSet

我有以下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;

    }

這是打破試圖將轉換時intValue1√ Yes-1x No

錯誤是-

輸入的字符串格式不正確。 無法將<√是>存儲在intValue列中。 預期的類型是Int32。

這可能嗎?

您的列intValueInt32因此無法將其設置為string值,這是您在foreach循環中要嘗試的操作。

您不需要int r = 0; 變量,用於在設置DataRow row訪問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";
    }        
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM