您好:

如下程式码但执行时,却会出现Module:XXXX, MethodName:m_rpt_01Error:资料行 \'amt\' 是唯读。用其他栏位也是会现这样

请问 datatable 不能 载入后、再叫出来 更改内容吗?

目前,因为SQL 端无法产生qarcode所以得在 c#端处理,所以捞出来的资料其中一个,要再去设定qrcode的值目前只先 就tDATATABLE 可否处理就卡住了

谢谢

cmd.Parameters.Clear();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "RPT";

SqlDataReader dr = cmd.ExecuteReader();
//建立DataTable物件
DataTable table1 = new DataTable();
//DataReader物件载入DataTable
table1.Load(dr);

foreach (DataRow rw in table1.Rows)
{
// rw["sno"] = Int32.Parse(rw["sno"].ToString()) + 100;
rw["amt"] = Int32.Parse(rw["amt"].ToString()) + 100;

// rw["deptna"] = "XX"; //rw["deptna"].ToString() + "XX";

}

1 个回答

1

kawa0710

iT邦研究生 4 级 ‧ 2024-10-31 15:46:03

最佳解答

再建一个DataTable, 用新增DataRow的方式把table1资料存到新的DataTable

DataTable dtTable = new DataTable();
DataRow row;

// 建立栏位
dtTable.Columns.Add("sno", typeof(int));
dtTable.Columns.Add("amt", typeof(int));
dtTable.Columns.Add("deptna", typeof(string));

// 新增资料到DataTable
foreach (DataRow rw in table1.Rows)
{
    row = dtTable.NewRow();
    row["sno"] = Int32.Parse(rw["sno"].ToString()) + 100;
    row["amt"] = Int32.Parse(rw["amt"].ToString()) + 100;
    row["deptna"] = rw["deptna"].ToString() + "XX";
    dtTable.Rows.Add(row);
}

  • 1

noway

iT邦研究生 1 级 ‧
2024-11-01 13:13:01

您好:
有找到用
foreach (DataColumn col in table1.Columns) { col.ReadOnly = false; };

谢谢

修改