Рейтинг:
0
Karthik_Mahalingam
попробуй вот так
private void Form1_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("Date" );
dt.Columns.Add("DateObjectHide",typeof(DateTime));
dt.Rows.Add("27/01/2015");
dt.Rows.Add("27/01/2016");
dt.Rows.Add("27/01/2016");
dt.Rows.Add("27/01/2017");
dt.Rows.Add("27/01/2018");
dt.Rows.Add("27/01/2018");
dt.Rows.Add("27/01/2018");
dt.Rows.Add("27/02/2018");
dt.Rows.Add("27/02/2018");
dt.Rows.Add("27/03/2016");
dt.Rows.Add("27/04/2015");
dt.Rows.Add("27/04/2016");
dataGridView1.DataSource = dt;
dt.AsEnumerable().ToList().ForEach(k => k["DateObjectHide"] = DateTime.ParseExact(k["Date"].ToString(), "dd/MM/yyyy", CultureInfo.CurrentCulture));
dataGridView1.Columns["DateObjectHide"].Visible = false;
}
bool flag = false;
private void buttonSort_Click(object sender, EventArgs e)
{
if(flag)
this.dataGridView1.Sort(this.dataGridView1.Columns["DateObjectHide"], ListSortDirection.Ascending);
else
this.dataGridView1.Sort(this.dataGridView1.Columns["DateObjectHide"], ListSortDirection.Descending);
flag = !flag;
}
chaitanya556
Привет, это не сработало. на самом деле я связываю данные из базы данных.
Karthik_Mahalingam
однако из базы данных вы будете получать datatable rite?
таким образом, вы можете применить приведенную выше логику.
chaitanya556
на самом деле я привязываюсь вот так:
Скрыть скопировать код
string sqlex="select * from Table";dap=new SqlDataAdapter(sqlex,connectionString);table=new DataTable();table.Columns.Add(new DataColumn(" ",typeof(bool)));dap.fill(table);datagridview1.DataSource=table;
Karthik_Mahalingam
вы должны добавить столбец после привязки данных к таблице.
после метода "заливки".
Karthik_Mahalingam
string sqlex="select * from Table";
dap=new SqlDataAdapter(sqlex,connectionString);
table=new DataTable();
table.Columns.Add(new DataColumn(" ",typeof(bool)));
dap.fill(table);
table.Columns.Add("DateObjectHide",typeof(DateTime));
datagridview1.DataSource=table;
table.AsEnumerable().ToList().ForEach(k => k["DateObjectHide"] = DateTime.ParseExact(k["Date"].ToString(), "dd/MM/yyyy", CultureInfo.CurrentCulture));
dataGridView1.Columns["DateObjectHide"].Visible = false;
chaitanya556
FormatException был необработан
k["DateObjectHide"] = DateTime.ParseExact(k["Date"].ToString(), "dd/MM/yyyy", CultureInfo.CurrentCulture));
"Строка не была распознана как допустимая Дата-Время."
Karthik_Mahalingam
есть ли какой-нибудь нуль в столбце даты ?
chaitanya556
Нет... формат даты будет выглядеть примерно так: "ДД/ММ/гггг"
Karthik_Mahalingam
попробовать это
table.AsEnumerable().ToList().ForEach(k => {
DateTime temp ;
k["DateObjectHide"] = null;
if( DateTime.TryParseExact(k["Date"].ToString(), "dd/MM/yyyy", CultureInfo.CurrentCulture, DateTimeStyles.None, out temp){
k["DateObjectHide"] = temp;
}
}
);
chaitanya556
k["DateObjectHide"]=null
это получение
ArgumentException был необработанНе могу установить DateObjectHide колонка', чтобы быть null. Пожалуйста, используйте вместо этого DBNull.
я использовал DBNull вместо null.
но он получил ошибку
-Система.Значение dbnull' - это "тип", но используется как переменная'
Karthik_Mahalingam
используйте DBNull.Ценность;
chaitanya556
у меня есть пустой столбец "DateObjectHide" в этом datatable
Karthik_Mahalingam
Каково значение в столбце дата?
chaitanya556
27/01/2018
как это...
Karthik_Mahalingam
ладно
попробуйте мой код в отдельной форме и проверьте функциональность.