Nie można sformatować daty w kolumnie zestawu danych, GridView
Czytam dane z arkusza Excela i wyświetlając go w danych gridview.There są niektóre kolumny daty w excel.So, gdy czytam dane z Excela i wiążę go z dataGridView.Data jest wyświetlana w formacie „02 / 02/2009 12:00:00 AM ”, ale rzeczywiste dane w kolumnie excel mają format„ 2/2/2009 ”. Jak zmienić format daty w datagridview.
Ponieważ wiążę dane z zestawu danych, nie mam żadnych kolumn szablonów ani zestawu kolumn związanych, więc nie wiem, gdzie ustawić HtmlEncode = "False" DataFormatString = "{0: T}"
Czy jest jakiś sposób, aby to zrobić. Proszę mi pomóc.
Poniżej znajduje się przykładowy kod.
string OleDbConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= "+ FileUpload1.PostedFile.FileName + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"";
string strSheetName = "Sheet1";
OleDbConnection oledbConnection;
OleDbCommand oledbCommand;
OleDbDataAdapter oledbAdapter;
oledbCommand = new OleDbCommand();
oledbAdapter = new OleDbDataAdapter();
DataSet dsExcellData = new DataSet();
oledbConnection = new OleDbConnection(OleDbConnection);
oledbConnection.Open();
oledbCommand.Connection = oledbConnection;
oledbCommand.CommandText = "Select * from [" + strSheetName + "$]"; // i want to find this sheet name
oledbAdapter.SelectCommand = oledbCommand;
oledbAdapter.Fill(dsExcellData);
oledbConnection.Close();
GridView1.DataSource = dsExcellData.Tables[0];
GridView1.DataBind();
================================================== ======== Próbowałem
dsExcellData.Tables [0] .Rows [rowcount] ["date_column"]. ToString ()] = dsExcellData.Tables [0] .Rows [rowcount] ["date_column"]. ToString ()]. ToString ("d") ;
ale wartość nie jest przypisywana jako „mm / dd / rrrr” Ponownie przyjmuje czas domyślny czasu (mm / dd / rrrr gg: mm: ss AM).
================================================== ===========
Po prostu przypisuję zestaw danych do gridview. Problem polega na tym, że zestaw danych odczytuje kolumnę daty w formacie mm / dd / rrrr hh: mm: ss AM. Nie mogę również zmienić danych w zbiorze danych.
================================================== ===========
Ostatecznie dostałem odpowiedź od ScottE:
musimy dodać poniższy kod w itemdatabound w datagridview:
protected void dgValidatedData_ItemDataBound1(object sender, DataGridItemEventArgs e)
{
for (int i = 0; i <= e.Item.Cells.Count - 1; i++)
{
System.DateTime cellDate = default(System.DateTime);
if (System.DateTime.TryParse(e.Item.Cells[i].Text, out cellDate))
{
e.Item.Cells[i].Text = string.Format("{0:d}", cellDate);
}
}
}