2016-04-22 6 views
2

Wie ändern Sie das Format der Daten in einer Spalte eines LINQ in SQL-Klassen in einem DataGrid-Steuerelement?LINQ zu SQL-Klassen, Wie wird das Spaltenformat geändert? (DataGrid)

Ich habe ein SQL Server Tabellenspalte mit DateTime Daten und zeigt, wie man erwarten würde, 10/19/2015 8:30:00 AM Wie Sie das Format ändern, nur um das Datum zu zeigen 10/19/2015

Ich kann nichts in dem Fenster Eigenschaften sehen, dass würde das tun. Wird dies in XMAL behandelt?

Der Code, den ich bisher habe.

public partial class MainWindow : Window 
    { 
     HomeLINQSqlDataContext dc = new HomeLINQSqlDataContext(Properties.Settings.Default.Staff_ManagerConnectionString2); 
     //TimeRecorderLINQSqlDataContext dc = new TimeRecorderLINQSqlDataContext(Properties.Settings.Default.Staff_ManagerConnectionString1);  
     public MainWindow() 
     { 
      System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US"); 

      PopulateCollection(); 
      if (dc.DatabaseExists()) TimeRcorderDataGrid.ItemsSource = dc.Staff_Time_TBLs; 
      //if (dc.DatabaseExists()) TimeRcorderDataGrid.ItemsSource = dc.Staff_Data_TBLs; 
      InitializeComponent(); 


     } 
     private void SaveButton_Click(object sender, RoutedEventArgs e) 
     { 
      dc.SubmitChanges(); 
     } 
     private void PopulateCollection() 
     { 
      ObservableCollection<FooClass> fooColl = new ObservableCollection<FooClass>(); 
      for (int i = 0; i <= 10; i++) 
      { 
       fooColl.Add(new FooClass() { Description = i.ToString(), SomeDate = DateTime.Now }); 
      } 
      TimeRcorderDataGrid.ItemsSource = fooColl; 
     } 
    } 
    public class FooClass 
    { 
     public string Description { get; set; } 
     public DateTime SomeDate { get; set; } 

    } 

} 

XAML,

<TabControl> 
     <TabItem Header=" 社員データ " FontSize="20"> 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="16*"/> 
        <ColumnDefinition Width="113*"/> 
        <ColumnDefinition Width="1057*"/> 
       </Grid.ColumnDefinitions> 
       <DataGrid> 
        <DataGrid.Columns> 
         <DataGridTextColumn Binding="{Binding StartDate, StringFormat=\{0:dd.MM.yy \}}" /> 
        </DataGrid.Columns> 
       </DataGrid> 
       <DataGrid Name="TimeRcorderDataGrid" Margin="0,0,0,79" Grid.ColumnSpan="3"> 
        <DataGrid.Columns> 
         <DataGridTextColumn Width="Auto" /> 
        </DataGrid.Columns> 
       </DataGrid>     
       <Button x:Name="SaveButton" Content="Save" Click="SaveButton_Click" Grid.Column="1" HorizontalAlignment="Left" Margin="10,583,0,0" VerticalAlignment="Top" Width="391" Grid.ColumnSpan="2" Height="57"/> 
      </Grid> 
     </TabItem> 
     <TabItem Header=" 入力ページ " FontSize="20"> 
      <DataGrid AutoGenerateColumns="False" ItemsSource="{Binding}" Margin="10" Name="dataGrid1"> 
       <DataGrid.Columns> 
        <DataGridComboBoxColumn Header="Combo" Width="300" 
        SelectedItemBinding="{Binding Values}" 
        /> 
       </DataGrid.Columns> 
      </DataGrid> 
     </TabItem> 


    </TabControl> 

Dank

Antwort

0

können Sie DateTime forma StringFormat in der Bindung verwendet wird. Lassen Sie mich ein Beispiel zeigen:

XAML:

<DataGrid Name="dataGrid" VerticalGridLinesBrush="Yellow" 
    HorizontalGridLinesBrush="Yellow" AutoGenerateColumns="False"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding Description}" /> 
     <DataGridTextColumn Binding="{Binding SomeDate, StringFormat=\{0:dd.MM.yy \}}" />     
    </DataGrid.Columns> 
</DataGrid> 

Modell:

public class FooClass 
{ 

    public string Description { get; set; } 
    public DateTime SomeDate { get; set; } 
} 

Code-Behind:

public MainWindow() 
{ 
    Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US"); 
    InitializeComponent(); 
    PopulateCollection(); 
} 

private void PopulateCollection() 
{ 
    ObservableCollection<FooClass> fooColl = new ObservableCollection<FooClass>(); 
    for (int i = 0; i <= 10; i++) 
    { 
     fooColl.Add(new FooClass() { Description=i.ToString(), SomeDate=DateTime.Now}); 
    } 
    dataGrid.ItemsSource = fooColl; 
} 

Update:

Es gibt 12 Spalten im DataGrid, die vom SQL Server importiert werden. Nur zwei dieser Spalten sind die Spalten DateTime, No. 7 und No. 8. Wie legen Sie das Format für diese Spalten fest?

Sie sollten erklären ausdrücklich Spalten Ihrer DataGrid und schreiben StringFormat für Spalten No. 7 und No. 8. Zum Beispiel:

<DataGrid Name="TimeRcorderDataGrid" Margin="0,0,0,79" Grid.ColumnSpan="3"> 
    <DataGrid.Columns> 
    <DataGridTextColumn Binding="{Binding ColumnOne}" Width="Auto" /> 
    <DataGridTextColumn Binding="{Binding ColumnTwo}" Width="Auto" /> 
    <DataGridTextColumn Binding="{Binding ColumnThree}" Width="Auto" /> 
    <DataGridTextColumn Binding="{Binding ColumnFour}" Width="Auto" /> 
    <DataGridTextColumn Binding="{Binding ColumnFive}" Width="Auto" /> 
    <DataGridTextColumn Binding="{Binding ColumnSix}" Width="Auto" /> 
    <DataGridTextColumn Binding="{Binding ColumnSeven, StringFormat=\{0:dd.MM.yy \}}"}" Width="Auto" /> 
    <DataGridTextColumn Binding="{Binding ColumnEight, StringFormat=\{0:dd.MM.yy \}}"}" Width="Auto" /> 
    <DataGridTextColumn Binding="{Binding ColumnNine}" Width="Auto" /> 
    <DataGridTextColumn Binding="{Binding ColumnTen" Width="Auto" /> 
    <DataGridTextColumn Binding="{Binding ColumnEleven}" Width="Auto" /> 
    <DataGridTextColumn Binding="{Binding ColumnTwelve}" Width="Auto" /> 
    </DataGrid.Columns> 
</DataGrid> 
+0

Sehr neu zu all dem, aber wie Sie eine bestimmte Spalte angeben, um dieses Format anzuwenden? –

+0

Es gibt 12 Spalten im DataGrid, die vom SQL-Server importiert werden, nur zwei dieser Spalten sind die Spalten DateTime, No. 7 und No. 8. Wie legen Sie das Format für diese Spalten fest? –

+0

Ich weiß nicht warum, aber das kombiniert die Spalte 7 und 8 Daten und legte es in der ersten Spalte. Sollte ich etwas in dieser Schleife ändern? –

1

Wenn Sie die Spalten explizit definieren (anstatt sich auf Autogeneratecolumns) Sie sollten in der Lage sein, das Format Ihrer Daten angeben;

<DataGrid AutoGenerateColumns="False" ... > 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Raised" Binding="{Binding INSERT_PROPERTY_HERE, StringFormat=\{0:dd/MM/yy\}}"/> 
    </DataGrid.Columns> 
</DataGrid> 
+0

Danke, nach all der Hilfe, hat mir deine Antwort auch geholfen, danke, dass du dir die Zeit genommen hast und ein Dankeschön für deine Hilfe. –

Verwandte Themen