朧の.Netの足跡
問合せ先:support@oborodukiyo.info サイト内検索はこちら 
WPF ToolkitのDataGridを使ってみる





ここでは、CodePlexのWPF Toolkitに含まれているDataGridの使い方の一例を示しています。
まず参照設定で次の2つを加えておきます。
1.WPFToolkit
2.System.Windows.Controls.DataVisualization.Toolkit
コツとしては、XAMLでDataGridのAutoGenerateColumns属性をTrueにしておくことです。

WPF ToolkitのDownloadサイト http://wpf.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=29117

XAMLは次のようになります。

<window x:class="WPF.Window4"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:my="http://schemas.microsoft.com/wpf/2008/toolkit"
        title="Window4" height="300" width="300">
    <stackpanel>
    <my:datagrid x:name="dataGrid1" autogeneratecolumns="True" itemssource="{Binding}"></my:datagrid>
    <button height="23" horizontalalignment="Left" name="button1" verticalalignment="Top" width="75" click="button1_Click">Button</button>
    </stackpanel>
</window>

コードのほうは以下のようになります。
namespace WPF
{
    /// <summary>
    /// Window4.xaml の相互作用ロジック
    /// </summary>
    public partial class Window4 : Window
    {
        SqlConnectionStringBuilder connBldr = new SqlConnectionStringBuilder();
        DataTable dt = new DataTable();
        SqlDataAdapter sda = new SqlDataAdapter();
        public Window4()
        {
            InitializeComponent();
            //データベースに接続する
            connBldr.DataSource = @".\SQLExpress";
            connBldr.InitialCatalog = "pubs";
            connBldr.IntegratedSecurity = true;
            SqlConnection conn = new SqlConnection(connBldr.ConnectionString);
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandText = "SELECT fname,lname FROM employee";
            sda.SelectCommand = cmd;
            //UPDATEのSQL文だけを作成しています。INSERTとDELETEは省いております。
            SqlCommand updateCmd = new SqlCommand();
            updateCmd.CommandText = "UPDATE employee SET fname = @new_fname,lname = @new_lname WHERE fname = @old_fname AND lname = @old_lname";
            updateCmd.Parameters.Add(new SqlParameter("@new_fname", SqlDbType.VarChar, 0, ParameterDirection.Input,false,0,0,"fname",DataRowVersion.Current,""));
            updateCmd.Parameters.Add(new SqlParameter("@old_fname", SqlDbType.VarChar, 0, ParameterDirection.Input, false, 0, 0, "fname", DataRowVersion.Original, ""));
            updateCmd.Parameters.Add(new SqlParameter("@new_lname", SqlDbType.VarChar, 0, ParameterDirection.Input, false, 0, 0, "lname", DataRowVersion.Current, ""));
            updateCmd.Parameters.Add(new SqlParameter("@old_lname", SqlDbType.VarChar, 0, ParameterDirection.Input, false, 0, 0, "lname", DataRowVersion.Original, ""));
            sda.UpdateCommand = updateCmd;
            sda.Fill(dt);
            //DataGridとデータをリンク付けします。
            this.dataGrid1.DataContext = dt;
        }
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            using (SqlConnection conn = new SqlConnection(connBldr.ConnectionString))
            {
                //UPDATEだけ作成していたので、UPDATEだけにコネクションを関連付けます。
                sda.UpdateCommand.Connection = conn;
                sda.Update(dt);
            }
        }
    }
}








良いやや良い普通やや悪い悪い

投稿日時評価コメント