[英]Dataset.GetChanges(DataRowState.Modified) return null
[英]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;
}
這是打破試圖將轉換時intValue
任1
至√ Yes
或-1
到x No
。
錯誤是-
輸入的字符串格式不正確。 無法將<√是>存儲在intValue列中。 預期的類型是Int32。
這可能嗎?
您的列intValue
是Int32
因此無法將其設置為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.