2016-04-22 14 views
2

DataGridコントロールのLINQ列からSQLクラスへのデータ形式を変更するにはどうすればよいですか?LINQ to SQLクラス、列の形式を変更する方法? (DataGrid)

あなたはちょうど私がそのプロパティパネルには何も見ることができなかった日に10/19/2015

を表示する形式を変更するにはどうすればよい私はDateTimeデータとSQLサーバーのテーブルの列を持っていて、期待通りに示し、10/19/2015 8:30:00 AM これを行うだろう。これはXMALで処理されますか?

これまでのコードです。

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> 

おかげ

答えて

0

あなたはバインディングでStringFormatを使用してDateTimeをフォーマットすることができます。私は例を示しましょう:

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> 

モデル:

public class FooClass 
{ 

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

コードビハインド:

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; 
} 

更新:

SQLサーバーからインポートされたDataGridには12の列があり、そのうちの2つのみがDateTime、No. 7とNo. 8列です。これらの列の形式をどのように指定しますか?

あなたDataGridの明示的宣言列をと列No. 7No. 8ためStringFormatを書く必要があります。例:あなたが列を明示的に定義する(というよりもautoGenerateColumnsに頼って)している場合

<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

非常に新しいですが、そのフォーマットを適用するために特定の列を指定する方法はありますか? –

+0

SQLサーバーからインポートされたDataGridには12個の列があり、そのうちの2個だけがDateTime、No. 7とNo. 8列です。これらの列の形式をどのように指定しますか? –

+0

私は理由を知らないが、それは第7列と第8列のデータを組み合わせて第1列に入れる。私はそのループの中で何かを変えるべきでしょうか? –

1

あなたはあなたの日付の書式を述べることができるはずです。

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

ありがとう、すべての助けの後に、あなたの答えはまた、時間とあなたの助けのためのupvoteを取ってくれてありがとう、私を助けた。 –

関連する問題