DataGrid に MDB のデータを読み込んで表示するテンプレート |
SELECT 構文の列リストの内容と対応するクラス |
|
SQL
|
string cols = "社員コード,氏名,フリガナ,所属,性別," +
"Format(社員マスタ.作成日, 'yyyy/MM/dd') as 作成日," +
"Format(社員マスタ.更新日, 'yyyy/MM/dd') as 更新日," +
"給与,手当,管理者,生年月日";
string query = String.Format(
"select {0} from 社員マスタ where 社員コード >= '{1}'", cols, "0005"
);
| |
|
バインド用のクラス
テーブル定義(MDB)
ItemBaseModel
INotifyPropertyChanged インターフェイス
|
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Net;
using System.Windows;
using System.Windows.Input;
using System.Collections.ObjectModel;
using System.Data.Odbc;
using System.Data.Linq;
using System.Data;
namespace WPF_DataGrid_Database1 {
public partial class MainWindow : Window {
private OdbcConnection cn = null;
private ObservableCollection<Syain> syain_list = null;
// *********************************************
// コンストラクタ
// *********************************************
public MainWindow() {
InitializeComponent();
}
private class Syain : ItemBaseModel {
public string 社員コード { get; set; }
public string 氏名 { get; set; }
private string _check;
public string チェック {
get { return _check; }
set {
SetAndNotifyString(GetName(() => チェック), ref _check, value);
}
}
public string フリガナ { get; set; }
public string 所属 { get; set; }
public int 性別 { get; set; }
public string 作成日 { get; set; }
public string 更新日 { get; set; }
public int 給与 { get; set; }
public int? 手当 { get; set; }
public string 管理者 { get; set; }
public DateTime? 生年月日 { get; set; }
}
private void actButton_Click(object sender, RoutedEventArgs e) {
string cs = null;
// cs = "Driver={MySQL ODBC 5.2w Driver};" +
// "Server=localhost;" +
// "Database=lightbox;" +
// "Uid=root;" +
// "Pwd=password;";
// *********************************************
// MDB
// *********************************************
cs =
"Provider=MSDASQL" +
";Driver={Microsoft Access Driver (*.mdb)}" +
@";Dbq=lib\販売管理C.mdb" +
";";
string cols = "社員コード,氏名,フリガナ,所属,性別," +
"Format(社員マスタ.作成日, 'yyyy/MM/dd') as 作成日," +
"Format(社員マスタ.更新日, 'yyyy/MM/dd') as 更新日," +
"給与,手当,管理者,生年月日";
string query = String.Format("select {0} from 社員マスタ where 社員コード >= '{1}'", cols, "0005");
try {
cn = new OdbcConnection(cs);
DataContext context = new DataContext(cn);
syain_list = new ObservableCollection<Syain>(
context.ExecuteQuery<Syain>(query)
);
this.dataGrid1.DataContext = syain_list;
}
catch (Exception ex) {
Debug.WriteLine(ex.Message);
}
if (cn.State == ConnectionState.Open) {
cn.Close();
cn.Dispose();
}
}
private void dataGrid1_MouseDoubleClick(object sender, MouseButtonEventArgs e) {
Debug.WriteLine(dataGrid1.SelectedIndex);
int row = dataGrid1.SelectedIndex;
if (row != -1) {
syain_list[row].チェック = "◎";
}
}
}
}
|
|