どっとねっとふぁん

C# Tips And Samples
in 検索

17.データの並び替えと絞込み

最新の投稿は、投稿日時: 06-24-2005, 11:23 午前 投稿者: ono です。スレッドには 0 件の返答があります。
投稿のソート: 前へ 次へ
  •  06-24-2005, 11:23 午前 89

    17.データの並び替えと絞込み

    DataGridにデータを並び替えて表示したり、表示するデータを絞り込んだりするにはDataViewを利用します。
    以下のサンプルでDataViewの使い方を確認してみましょう。
    -------------------------------------------------------
    using System;
    using System.Windows.Forms;
    using System.Drawing;
    using System.Data;
    
    class WinSample : Form
    {
        DataGrid dg;
        DataSet ds;
        DataView dv;
    
        public static void Main()
        {
            Application.Run(new WinSample());
        }
    
        public WinSample()
        {
            this.SuspendLayout();
    
            dg = new DataGrid();
            dg.Anchor = AnchorStyles.Top|AnchorStyles.Bottom|AnchorStyles.Left|AnchorStyles.Right;
            dg.Location = new Point(10, 10);
            dg.Size = new Size(275, 100);
            this.Controls.Add(dg);
    
            ds = new DataSet();
    
            this.Text = "DataGrid Sample";
            this.Size = new Size(300, 200);
    
            Button mybutton = new Button();
            mybutton.Anchor = AnchorStyles.Bottom|AnchorStyles.Right;
            mybutton.Location = new Point(200, 130);
            mybutton.Text = "絞込み";
            mybutton.Click += new EventHandler(this.mb_Click);
            this.Controls.Add(mybutton);
    
            this.ResumeLayout();
        }
    
        protected override void OnLoad(EventArgs e)
        {
            ds.ReadXml("testdata1.xml");
    
            // DataViewを利用してソート
            dv = new DataView(ds.Tables[0]);
            dv.Sort = "id DESC";
            dg.DataSource = dv;
        }
    
        private void mb_Click(object sender, EventArgs e)
        {
            // DataViewを利用して絞り込む
            dv.RowFilter = "id = '1'";
        }
    }
    
    -------------------------------------------------------
    実はDataTableにはDefaultViewというプロパティがあり、これはDataViewそのものです。
    このためDataViewオブジェクトを生成せず、以下のようにDefaultViewを直接利用することも可能です。
    -------------------------------------------------------
    using System;
    using System.Windows.Forms;
    using System.Drawing;
    using System.Data;
    
    class WinSample : Form
    {
        DataGrid dg;
        DataSet ds;
    
        public static void Main()
        {
            Application.Run(new WinSample());
        }
    
        public WinSample()
        {
            this.SuspendLayout();
    
            dg = new DataGrid();
            dg.Anchor = AnchorStyles.Top|AnchorStyles.Bottom|AnchorStyles.Left|AnchorStyles.Right;
            dg.Location = new Point(10, 10);
            dg.Size = new Size(275, 100);
            this.Controls.Add(dg);
    
            ds = new DataSet();
    
            this.Text = "DataGrid Sample";
            this.Size = new Size(300, 200);
    
            Button mybutton = new Button();
            mybutton.Anchor = AnchorStyles.Bottom|AnchorStyles.Right;
            mybutton.Location = new Point(200, 130);
            mybutton.Text = "絞込み";
            mybutton.Click += new EventHandler(this.mb_Click);
            this.Controls.Add(mybutton);
    
            this.ResumeLayout();
        }
    
        protected override void OnLoad(EventArgs e)
        {
            ds.ReadXml("testdata1.xml");
    
            // DataTableのDefaultViewを利用してソート
            ds.Tables[0].DefaultView.Sort = "id DESC";
            dg.DataSource = ds.Tables[0];
        }
    
        private void mb_Click(object sender, EventArgs e)
        {
            // DataTableのDefaultViewを利用して絞り込む
            ds.Tables[0].DefaultView.RowFilter = "id = '1'";
        }
    }
    
    -------------------------------------------------------
    どちらの場合も同じ動作になっていることが確認できると思います。



    あおい情報システム株式会社
     小野修司(どっとねっとふぁん)
RSS ニュースフィードで参照
SkinName:iroha_CS2
Powered by Community Server, by Telligent Systems