C#
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.Threading.Tasks;
6using System.Windows;
7using System.Windows.Controls;
8using System.Windows.Data;
9using System.Windows.Documents;
10using System.Windows.Input;
11using System.Windows.Media;
12using System.Windows.Media.Imaging;
13using System.Windows.Navigation;
14using System.Windows.Shapes;
15using System.ComponentModel;
16using Npgsql;
17using System.Data;
18using System.Web;
19using System.Collections.ObjectModel;
20namespace AllStationCounter
21{
22 /// <summary>
23 /// MainWindow.xaml の相互作用ロジック
24 /// </summary>
25 public partial class MainWindow : Window
26 {
27
28
29
30 public MainWindow()
31 {
32
33 DataTable tb = new DataTable();
34 //DataTableのインスタンスtbにnameという名前の列を定義
35
36 tb.Columns.Add("name");
37 //DataTableのインスタンスtbにnameという列を挿入
38
39 InitializeComponent();
40 var connString = "Server=cpedev27;Port=5432;User Id=test_user;Password=test_user;Database=test_server;";
41 var conn = new NpgsqlConnection(connString);
42 conn.Open();
43
44
45
46
47
48 var command = new NpgsqlCommand("select name from lesson2.person", conn);
49 var dataReader = command.ExecuteReader();
50
51
52 var row1 = tb.NewRow();
53 //DataTableのインスタンスtbにrow1という行を定義(tbにはname列がある)
54
55 row1["name"] = "全サブライン";
56 //tbのname列のrow1(name)行のセルに全サブラインを定義
57
58 tb.Rows.Add(row1);
59 //tbのname列のrow1(name)行のセルに全サブラインを挿入(1.1)
60
61 while (dataReader.Read())
62 {
63
64 var row = tb.NewRow();
65 //DataTableのインスタンスtbにrowという行を定義(1.2)
66
67 for (int i = 0; i < dataReader.FieldCount; i++)
68
69 {
70 row["name"] = dataReader["name"];
71 // dataReader["name"]はDBからとってくるデータの為名前は欲しい列と一致させる
72 }
73
74 tb.Rows.Add(row);
75
76 }
77
78 combo.ItemsSource = tb.DefaultView;
79 combo.DisplayMemberPath = "name";
80 combo.SelectedValuePath = "name";
81
82 }
83
84
85
86
87 //全直ボタン操作
88 private void AllChecked(object sender, RoutedEventArgs e)
89 {
90
91 {
92 this.First.IsChecked = true;
93 this.Second.IsChecked = true;
94 this.Third.IsChecked = true;
95 }
96 }
97
98 private void AllUnChecked(object sender, RoutedEventArgs e)
99 {
100 //
101 if (!m_isAutoOff)
102 {
103 this.First.IsChecked = false;
104 this.Second.IsChecked = false;
105 this.Third.IsChecked = false;
106 }
107 }
108
109 //First,Second,Thirdの状態が変化した
110 private void CheckChanged(object sender, RoutedEventArgs e)
111 {
112 if((this.First.IsChecked == true) && (this.Second.IsChecked == true) && (this.Third.IsChecked == true))
113 {
114 this.All.IsChecked = true;
115
116 }
117
118 }
119
120 private bool m_isAutoOff =false;
121 private void UnCheckChanged(object sender, RoutedEventArgs e)
122 {
123
124
125 if ((this.First.IsChecked == false) && (this.Second.IsChecked == false) && (this.Third.IsChecked == false))
126 {
127 CheckBox cb = sender as CheckBox;
128 cb.IsChecked = true;
129
130 }
131 m_isAutoOff = true;
132 this.All.IsChecked = false;
133 //↑この処理が終わった瞬間にAllUnCheckedイベントに行くためm_isAutoOff = true;(falseのため未実行になる)を使いイベントを走らせないようにする
134 m_isAutoOff = false;
135 }
136
137
138
139 }
140}
141
XAML
1Window x:Class="AllStationCounter.MainWindow"
2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4 xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
6 xmlns:local="clr-namespace:AllStationCounter"
7 mc:Ignorable="d"
8 Title="MainWindow" Height="746.799" Width="1016.523">
9 <Grid Margin="0,0,-8,-3">
10
11 <Border BorderBrush="Black" BorderThickness="1" HorizontalAlignment="Left" Height="50" Margin="23,152,0,0" VerticalAlignment="Top" Width="577"/>
12 <Border BorderBrush="Black" BorderThickness="1" HorizontalAlignment="Left" Height="47" Margin="616,90,0,0" VerticalAlignment="Top" Width="373"/>
13 <Border BorderBrush="Black" BorderThickness="1" HorizontalAlignment="Left" Height="47" Margin="23,90,0,0" VerticalAlignment="Top" Width="577"/>
14 <ComboBox ItemsSource= "{Binding subline}" x:Name="combo" HorizontalAlignment="Left" Margin="103,34,0,0" VerticalAlignment="Top" Width="193" Height="28"/>
15 <Label x:Name="label" Content="サブライン" HorizontalAlignment="Left" Margin="23,34,0,0" VerticalAlignment="Top" Width="100"/>
16 <Label x:Name="label1" Content="検索期間単位" HorizontalAlignment="Left" Margin="23,100,0,0" VerticalAlignment="Top" Width="100"/>
17 <!--Group1-->
18 <RadioButton x:Name="Productiondate" Content="生産日" HorizontalAlignment="Left" Margin="128,105,0,0" VerticalAlignment="Top" GroupName="Group1"/>
19 <RadioButton x:Name="Timeofoccurrence" Content="発生時間" HorizontalAlignment="Left" Margin="198,105,0,0" VerticalAlignment="Top" GroupName="Group1"/>
20
21 <DatePicker DisplayDateStart="1900/01/01" DisplayDateEnd="3000/01/01" SelectedDateFormat="Short" HorizontalAlignment="Left" Margin="283,100,0,0" VerticalAlignment="Top" Width="138" Height="28" />
22 <DatePicker DisplayDateStart="1900/01/01" DisplayDateEnd="3000/01/01" SelectedDateFormat="Short" HorizontalAlignment="Left" Margin="439,100,0,0" VerticalAlignment="Top" Width="138" Height="28"/>
23 <CheckBox x:Name="First" Content="1直" HorizontalAlignment="Left" Margin="749,105,0,0" VerticalAlignment="Top" Checked="CheckChanged" Unchecked="UnCheckChanged"/>
24 <CheckBox x:Name="Second" Content="2直" HorizontalAlignment="Left" Margin="809,105,0,0" VerticalAlignment="Top" Checked="CheckChanged" Unchecked="UnCheckChanged"/>
25 <CheckBox x:Name="Third" Content="3直" HorizontalAlignment="Left" Margin="873,105,0,0" VerticalAlignment="Top" Checked="CheckChanged" Unchecked="UnCheckChanged"/>
26 <CheckBox x:Name="All" Content="全直" HorizontalAlignment="Left" Margin="630,104,0,0" VerticalAlignment="Top" Checked="AllChecked" Unchecked="AllUnChecked"/>
27 <DataGrid x:Name="dataGrid" HorizontalAlignment="Left" Margin="23,224,0,0" VerticalAlignment="Top" Height="472" Width="966"/>
28 <Label x:Name="Countunit" Content="集計単位" HorizontalAlignment="Left" Margin="23,162,0,0" VerticalAlignment="Top" Width="87"/>
29
30 <!--Group2-->
31 <RadioButton x:Name="radioButton2" Content="生産日" HorizontalAlignment="Left" Margin="128,167,0,0" VerticalAlignment="Top" GroupName="Group2"/>
32 <RadioButton x:Name="radioButton3" Content="生産直" HorizontalAlignment="Left" Margin="198,167,0,0" VerticalAlignment="Top" GroupName="Group2"/>
33 <RadioButton x:Name="radioButton4" Content="時間" HorizontalAlignment="Left" Margin="283,167,0,0" VerticalAlignment="Top" GroupName="Group2"/>
34
35 <Button x:Name="button" Content="検索" HorizontalAlignment="Left" Margin="616,152,0,0" VerticalAlignment="Top" Width="373" Height="50"/>
36
37
38
39
40 </Grid>
41</Window>