2013-08-13 2 views
2

DataGrid에 이미있는 대/소문자에 대한 정보를 표시하고 있습니다.잘못된 데이터 형식을 표시하는 DataGrid

MS Access 데이터베이스에는 모든 날짜가 DateTime 형식으로 저장되며 다음과 같이 표시됩니다. dd/MM/yyyy.

문제는 프로그램이 실행될 때 DataGrid에 표시 될 때 형식이 MM/dd/yyyy로 변경된다는 것입니다.

나 손실 만드는 것은 내가 MessageBox에 표시 할 때 당해 셀의 내용이 직전 내가 올바른 형식을 가지고 한 DataGridDataTable (DD/MM은/년)을 할당한다는 것입니다.

DateTimeMode을 변경하려고했지만 동일한 형식이 표시됩니다.

누군가이 문제를 해결하는 데 유용한 정보를 얻었습니까? 아래 코드를 입력하십시오 :

DataTable temp = dt.Clone();

  temp = (from nardin in dt.AsEnumerable().Distinct() 
        where nardin["NUMERO CLIENT"].ToString() == _centerID.ToString() 
        select nardin).CopyToDataTable(); 





      RemoveDuplicates(temp, "NUMERO DOSSIER"); 


      foreach (DataRow row in temp.Rows) 
      { 
       MessageBox.Show(row["DATE INTERVENTION"].ToString()); //this gives me the DateTime format i'd like to display 
      } 

      existingCase.ItemsSource = temp.AsDataView(); //once assigned to the DataGrid the DateTime format is not the same as above 

는 실제로 데이터 그리드는 XAML 파일에 다음과 같이 선언한다 : existingCase.ItemsSource = temp.AsDataView();

사전에 감사 :

<DataGrid SelectionUnit="FullRow" SelectedItem="{Binding SelectedBI, Mode=TwoWay}" AutoGenerateColumns="True" Margin="0,167,12,167" Name="existingBI" Width="588" HorizontalAlignment="Right"> 
     <DataGrid.RowStyle> 
      <Style TargetType="{x:Type DataGridRow}"> 
       <EventSetter Event="MouseDoubleClick" Handler="resultDataGridBI_MouseDoubleClick"/> 
      </Style> 
     </DataGrid.RowStyle> 
    </DataGrid> 

나는 함께 DataTable에 바인딩 해요!

답변

1

이 시도 :이 추가 App.xaml.cs에서

<Application x:Class="DataGridAddRows.App" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Startup="Application_Startup" ... /> 

:

App.xaml 파일에 Startup 이벤트 핸들을 추가 바인딩에 문자열 형식을 설정하려면, 당신은 이런 식으로 뭔가를 할 것이다 :

public partial class App : Application 
{ 
    private void Application_Startup(object sender, StartupEventArgs e) 
    { 
     FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), 
      new FrameworkPropertyMetadata(System.Windows.Markup.XmlLanguage.GetLanguage(System.Globalization.CultureInfo.CurrentCulture.IetfLanguageTag))); 
    } 
}    

이제 날짜는 di 현재의 문화에 따라 분출했다. 디스플레이

Note:StringFormat 적합한 날짜. dd/MM/yyyy과 같은 날짜가있는 셀을 편집하려는 경우 데이터를 dd/MM/yyyy과 같이 입력하면 시스템은 MM/dd/yyyy 형식이되므로 오류는 빨간색 Border으로 표시됩니다.

+1

좋아요, 그것은 datetime 문화를 설정하는 내 스레드와 완벽하게 작동합니다! 감사합니다. – 3wic

0

DateTime 개체를 표시하는 DataGrid의 열에 대한 코드를 표시하지 않으면 대답하기가 어렵지만 값을 바인딩한다고 가정합니다.

<DataGrid ItemsSource="{Binding Items}"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Value" Binding="{Binding Value, 
      StringFormat={}{0:dd/MM/yyyy}}" /> 
    </DataGrid.Columns> 
</DataGrid> 
+0

나는 dg 선언문을 인용했다. 귀하의 솔루션을 추가하려했지만 동일한 결과가 나타났습니다. – 3wic

관련 문제