2014-02-11 2 views
1

Windows Forms 응용 프로그램에서 DataGrid보기를 사용하고 있습니다. 날짜 날짜 열을 표시하는 여러 데이터 표가 있습니다. 데이터를 표시 할 때 날짜가 올바르게 표시되지만 항상 '00 : 00 : 00'이 뒤에옵니다. 날짜를 'dd/mm'yyyy'로만 표시하도록 어떻게 변경할 수 있습니까? 또한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); 

나는 다른 데이터 그리드에서 또 다른 문제를 가지고 다음과 같이

나는 내 데이터 그리드를 구축 할 수 있습니다. 이 테이블에는 지불 열이 있는데 원래 테이블을 액세스 할 때 열의 데이터는 '4.99'와 같았으며 예상대로 오른쪽 정렬되었습니다.하지만 표시 할 때 '£'기호가없고 왼쪽에 맞 춥니 다. . 그 데이터 그리드에 대한

코드 : 제 부 시도 들어

//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

:

paymentsDataGridView.Rows [arow] .Cells :

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

둘째 부분 시도위한

[1]. 값 = 독자 [ "지불"]. 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