在我的datagridview1中,DATE列显示格式“MM / dd / yyyy hh:mm:ss”
然后我使用这段代码。
我使用一个函数来填充像这样的数据视图
public void load_table()
{
DataTable ltdgv = getLoad_table();
//the getLoad_table() function return a datatable type and store it to ltdgv
foreach (DataRow dr in ltdgv.Rows)
{
dr["DATE"] = DateTime.Parse((dr["DATE"].ToString())).ToShortDateString();
}
dataGridView1.DataSource = ltdgv;
}
但是DATE列仍显示格式MM / dd / yyyy [例如:2016年11月27日]
但我想将其更改为dd / MM / yyyy或2016年11月27日
我尝试将其更改为=
dr["DATE"] = DateTime.Parse((dr["DATE"].ToString("dd/MM/yyyy"))).ToShortDateString();
// I fill a parameter to the .ToString()
但我现在得到“语法错误”。
那么,如何解决这个问题?
答案 0 :(得分:4)
请勿尝试更改数据表中日期时间列的“格式” 简单的DateTime本身没有格式。
这是用于显示日期的工具,该日期包含以人类可读格式呈现的日期,无论此格式如何。
换句话说。 DataGridView必须执行此任务。
你只需要设置
dataGridView1.Columns[0].DefaultCellStyle.Format = "dd/MM/yyyy";
(假设索引为零的网格列是您的日期列)
答案 1 :(得分:2)
将自定义格式放在输出ToString()中,而不是输入。
foreach (DataRow dr in ltdgv.Rows)
{
dr["DATE"] = DateTime.Parse((dr["DATE"].ToString())).ToString("dd/MM/yyyy");
}
答案 2 :(得分:0)
如果是 asp:BoundField
using (var conn = new NpgsqlConnection(cs)) {
conn.Open();
var cmd = conn.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add(new NpgsqlParameter("@param", 200));
cmd.CommandText = @"
DO $$
DECLARE _temp_val integer := @param;
BEGIN
-- do something
CREATE TEMP TABLE TEMP_TB(
VALUE1 INTEGER
);
INSERT INTO TEMP_TB (VALUE1) VALUES (_temp_val);
END $$;
SELECT * FROM TEMP_TB;
";
var result = cmd.ExecuteScalar();
}
如果是 asp:TemplateField
using (var conn = new NpgsqlConnection(cs)) {
conn.Open();
var cmd = conn.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add(new NpgsqlParameter("@param", 200));
cmd.CommandText = "select @param;";
var result = cmd.ExecuteScalar();
}