今天将从数据库中查询得到的datable赋给datagridview做datasource后,发现其中值类型的字段无法修改相关属性,比如保留小数位数等,后来发现这些值类型统统变成了string类型了。
仔细检查后,发现是查询数据库的时候,没有设置datatable的字段与数据库表中的字段类型一致。如果要保持数据类型不表,必须要设置datatable的字段类型与数据库表的字段类型一致。
程序如下:
public DataTable GetDataTable(string strCommandText) { this.oleDbCommand.CommandText = strCommandText; DataTable dt = new DataTable(); try { DataRow dr; //打开连接 this.oleDbConnection.Open(); //建立读取 OleDbDataReader odrReader = this.oleDbCommand.ExecuteReader(); //查询并显示数据 int size = odrReader.FieldCount; for (int i = 0; i < size; i++) { DataColumn dc; dc = new DataColumn(odrReader.GetName(i)); dc.DataType = odrReader.GetFieldType(i);//必须指定类型,否则自动转为string dt.Columns.Add(dc); } while (odrReader.Read()) { dr = dt.NewRow(); for (int i = 0; i < size; i++) { dr[odrReader.GetName(i)] = odrReader[odrReader.GetName(i)].ToString(); } dt.Rows.Add(dr); } odrReader.Close(); return dt; } catch { throw new Exception(); } finally { //关闭连接 this.oleDbConnection.Close(); } }