c#如何修改DataTable里面的特定列的数据类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#如何修改DataTable里面的特定列的数据类型相关的知识,希望对你有一定的参考价值。

返回的datatable如下:
ID ChkYN ModiDate
A 1 20080202
B 1 20080202
C 1 20080202
但是这个ChkYN是int类型 我想要把它改成bool类型,但是我只能在datatable里面修改,不知道该怎么做

DataTable dt = AuctionOrders.PayCarPrice(uid, payStatus, pageIndex, pageSize);

(此处空一行)

if (dt.Rows.Count > 0)

//新表

DataTable newDt = new DataTable();

List<string> listColums = new List<string>();

//复制表结够

newDt = dt.Clone();

(此处空一行)

//新表中的列数据类型为Decmail的改为string

foreach (DataColumn col in newDt.Columns)

listColums.Add(col.ColumnName);

if (col.DataType.FullName == "System.Decimal")

col.DataType = Type.GetType("System.String");

(此处空一行)

foreach (DataRow row in dt.Rows)

DataRow newDtRow = newDt.NewRow();

foreach(DataColumn column in dt.Columns)

if (column.DataType.FullName == "System.Decimal")

newDtRow[column.ColumnName] = (Convert.ToDecimal(row[column.ColumnName]) / 10000).ToString("c") + "万";

else

newDtRow[column.ColumnName] = row[column.ColumnName];

newDt.Rows.Add(newDtRow);

(此处空三行)

var obj = new state = true, message = newDt ;

Response.Write(JsonConvert.SerializeObject(obj));

else

var obj = new state = false, message = "没有查询到信息" ;

Response.Write(JsonConvert.SerializeObject(obj));

扩展资料:

关于上述注意事项

DataTable中数据:ID NAME   State1   A 12   B 03   C 0State数据列为int型,想让它在页面读取显示时,1显示为非工作日转工作日,0显示为工作日转非工作日。

详细原因:当在做列转换时

1,数据库中类型和要修改成的类型不一致。

2,遇到DataTable中有数据则无法进行数据转换的问题。

解决方法:如果直接修改当前datatable里制定列的数据会提示因为有数据所以不让修改,而通过if判断直接赋值又会提示数据类型不同而拒绝操作,报错。

参考技术A 先new一个Table,得到列Columns,再修改Type:

DataTable dt=new DataTable();

dt.Columns["ChkYn"].DataType=Type.GetType("System.bool");本回答被提问者和网友采纳
参考技术B DataTable S=new DataTable();
S.Columns["ChkYn"].DataType=Type.GetType("System.bool");
参考技术C DataTable dt=new DataTable();
dt.Columns["ChkYn"].DataType=Type.GetType("System.bool");
参考技术D dt.Columns["ChkYn"].DataType=Type.GetType("System.bool");

更改DataTable某列的值。C#

我从数据库里读出数据放到DataTable里面,但是因为数据库存放的数据有些数据需要进行中文转换,就是把一些一般人看不懂的字符改成中文,再在datagridview里面显示出来.C#如何做?

楼上几位说的方法太笨拙了
强大的datagridview怎么可能不提供类似这样的事件呢
CellFormatting //,就是把源数据显示成指定格式的数据,但不影响原有的数据,即数据源映射到控件的格式化操作
还提供了一个与之相反的操作
CellParsing //把已经修改的数据按指定格式解析回源数据
如果你的单元格是可修改的,这个事件一定要进行处理,至于具体的处理要根据你的要求来进行,使用方法你看一下它的说明提示吧.
参考技术A DataTable1.Rows[rowIndex][columnIndex]=Convert(DataTable1.Rows[0].ToString());

Convert方法是你的转换方法,如果不知道Rows里的columnIndex索引值,用列名也可以,DataTable1.Rows[rowIndex]["Column1"]。
至于显示,直接绑定到datagridview上就行了。
参考技术B 可以在dataGridView的RowDataBound事件里面进行转换
protected void gridview_RowDataBound(object sender, GridViewRowEventArgs e)

if (e.Row.RowType == DataControlRowType.DataRow)

e.Row.Cells[0].Text = string.Format("yyyy-MM-dd hh:mm:ss", e.Row.Cells[0].Text);

参考技术C 使用for循环datatable的row

以上是关于c#如何修改DataTable里面的特定列的数据类型的主要内容,如果未能解决你的问题,请参考以下文章

c# 怎么更改DataTable 中某列的值?

关于c#中的datatable,不知道如何清空里面的数据

c# winform从数据库里面取出数据放到datatable里

C# 获取datatable某一列的值

C# datatable 去掉为空列的行

c#,判断2个dataTable是不是一样的问题。。