2014-02-11 6 views
1

Я использую представление datagrid в приложении формы Windows. У меня есть несколько сеток данных, которые отображают столбец даты. Когда я показываю свои данные, дата отображается правильно, но всегда следует «00: 00: 00». Как я могу изменить его, чтобы отображать дату только как «dd/mm'yyyy».Проблемы с отображением данных в столбце вида datagrid

Я строю свой DataGrid следующим образом:

 //Populate customers datagrid view 
    private void displayInGrid_Customers(string sqlcmd) 
    { 
     customersDataGridView.Rows.Clear(); 

     connect.Open(); 

     command.Connection = connect; 
     command.CommandText = sqlcmd; 

     reader = command.ExecuteReader(); 


     while (reader.Read()) 
     { 
      // add a row (get index) 
      int arow = customersDataGridView.Rows.Add(); 

      // datagridname.row[index].cells.value = reader[table].tostring() 
      customersDataGridView.Rows[arow].Cells[0].Value = reader["Customer_ID"].ToString(); 
      customersDataGridView.Rows[arow].Cells[1].Value = reader["Forename"].ToString(); 
      customersDataGridView.Rows[arow].Cells[2].Value = reader["Surname"].ToString(); 
      customersDataGridView.Rows[arow].Cells[3].Value = reader["Address"].ToString(); 
      customersDataGridView.Rows[arow].Cells[4].Value = reader["Town"].ToString(); 
      customersDataGridView.Rows[arow].Cells[5].Value = reader["Postcode"].ToString(); 
      customersDataGridView.Rows[arow].Cells[6].Value = reader["Date_Of_Birth"].ToString(); 
      customersDataGridView.Rows[arow].Cells[7].Value = reader["Phone_Number"].ToString(); 
      customersDataGridView.Rows[arow].Cells[8].Value = reader["Email"].ToString(); 
      customersDataGridView.Rows[arow].Cells[9].Value = reader["Current_Rental"].ToString(); 
      customersDataGridView.Sort(Surname, ListSortDirection.Ascending); 
     } 
     reader.Close(); 
     connect.Close(); 
    } 

    //Display all customers button 
    private void button_view_all_customers_Click(object sender, EventArgs e) 
    { 
     command.CommandText = "SELECT CUSTOMERS.Customer_ID, CUSTOMERS.Forename, CUSTOMERS.Surname, CUSTOMERS.Address, " 
     + "CUSTOMERS.Town, CUSTOMERS.Postcode, CUSTOMERS.Date_Of_Birth, CUSTOMERS.Phone_Number, CUSTOMERS.Email, CUSTOMERS.Current_Rental " 
     + "from CUSTOMERS LEFT JOIN STOCK ON CUSTOMERS.Current_Rental = STOCK.Product_ID"; 
     string cmd = command.CommandText; 
     displayInGrid_Customers(cmd); 

Кроме того, у меня есть еще одна проблема в другом DataGrid. У этого есть столбец платежа, и когда я изначально создавал таблицу в доступе, данные в столбце были как «4,99 фунта стерлингов», и право было оправдано, как ожидалось, но когда я его показываю, символ «Е» отсутствует, и он остается оправданным ,

Код для этого DataGrid является:

//Populate payments datagrid view 
    private void displayInGrid_Payments(string sqlcmd) 
    { 
     paymentsDataGridView.Rows.Clear(); 

     connect.Open(); 

     command.Connection = connect; 
     command.CommandText = sqlcmd; 

     reader = command.ExecuteReader(); 

     while (reader.Read()) 
     { 
      // add a row (get index) 
      int arow = paymentsDataGridView.Rows.Add(); 

      paymentsDataGridView.Rows[arow].Cells[0].Value = reader["Customer_ID"].ToString(); 
      paymentsDataGridView.Rows[arow].Cells[1].Value = reader["Payment"].ToString(); 
      paymentsDataGridView.Rows[arow].Cells[2].Value = reader["Payment_Date"].ToString(); 

     } 
     reader.Close(); 
     connect.Close(); 
    } 

    //Display all payments 
     private void button_display_payments_Click(object sender, EventArgs e) 
    { 
     command.CommandText = "SELECT PAYMENTS.Customer_ID, PAYMENTS.Payment, PAYMENTS.Payment_Date " 
     + "from PAYMENTS LEFT JOIN CUSTOMERS ON PAYMENTS.Customer_ID = CUSTOMERS.Customer_ID"; 
     string cmd = command.CommandText; 
     displayInGrid_Payments(cmd); 
    } 

ответ

1

Для первой части попытки:

customersDataGridView.Rows[arow].Cells[6].Value = ((DateTime)reader["Date_Of_Birth"]).ToShortDateString() 

И во второй части попробовать:

paymentsDataGridView.Rows [Arow] .Cells [1] .Value = читатель [«Оплата»]. ToString («C»);

paymentsDataGridView.Rows[arow].Cells[1].Value = String.Format("{0:C}", decimal.Parse(reader["Payment"].ToString())); 

Если он все еще дает ошибку, попытайтесь изменить десятичную для двойной, хотя за деньги и валюту я бы избежать двойной из-за ошибок округления он может дать.

+0

Это сработало отлично для моей первой проблемы, спасибо вам большое, очень! – DarkBlueMullet

+0

см. В редакции – shingonati0n

+0

Привет. Я получаю сообщение об ошибке «Нет перегрузки для метода« ToString »принимает 1 аргумент. Может быть, мне нужно объявить десятичное значение где-то вроде ((DateTime)? Я поставил «десятичный код, где datetime в первом примере, но это не сработало. – DarkBlueMullet

Смежные вопросы