zoukankan      html  css  js  c++  java
  • C#客户端绑定DataView和DataTable的几个技巧

    这几个问题算不上高级技巧,但是的确还有很多人不知道,尤其是对DataView了解比较少,下面代码演示了如何绑定数据到combobx和datagridview,另外还包括了如何在绑定时过滤重复,设置联动,以及如何利用DataRelation求汇总表格。程序界面请读者自己生成,一个form,两个combobox,三个datagridview就可以了。

    参考界面如下

    程序代码如下

    using  System;
    using  System.ComponentModel;
    using  System.Data;
    using  System.Windows.Forms;

    namespace  WindowsApplication6
    {
        
    public   partial   class  Form1 : Form
        
    {
            
    public  Form1()
            
    {
                InitializeComponent();
                initData();
            }


            System.Data.DataTable dt 
    =   new  DataTable();
            System.Data.DataSet ds 
    =   new  DataSet();

            
    ///   <summary>
            
    ///  初始化数据
            
    ///   </summary>

             private   void  initData()
            
    {
                dt.TableName 
    =   " Table1 " ;
                ds.Tables.Add(dt);
                dt.Columns.Add(
    " ID " typeof ( string ));
                dt.Columns.Add(
    " 板块 " typeof ( string ));
                dt.Columns.Add(
    " 积分 " typeof ( int ));

                addData(dt, 
    " jinjazz " " delphi " 50000 );
                addData(dt, 
    " jinjazz " " Sqlserver " 10000 );
                addData(dt, 
    " jinjazz " " .net " 20000 );
                addData(dt, 
    " zjcxc " " Sqlserver " 900000 );
                addData(dt, 
    " zjcxc " " vb " 10000 );
                addData(dt, 
    " zswang " " delphi " 70000 );
                addData(dt, 
    " zswang " " .net " 30000 );
            }


            
    private   void  addData(DataTable dt,  string  Name,  string  Catalog,  int  Salary)
            
    {
                System.Data.DataRow drow 
    =  dt.NewRow();
                drow[
    " ID " =  Name;
                drow[
    " 板块 " =  Catalog;
                drow[
    " 积分 " =  Salary;
                dt.Rows.Add(drow);
            }



            
    private   void  Form1_Load( object  sender, EventArgs e)
            
    {

                
    // 绑定所有ID到comboBox1
                 this .comboBox1.DataSource  =  dt.DefaultView.ToTable( true new   string []  " ID "  } );
                
    this .comboBox1.DisplayMember  =   " ID " ;

                
    // 绑定所有板块到comboBox2
                 this .comboBox2.DataSource  =   new  DataView(dt);
                
    this .comboBox2.DisplayMember  =   " 板块 " ;

                
    // 设置两个联动刷新
                 this .comboBox1.SelectedIndexChanged  +=   new  EventHandler(comboBox1_SelectedIndexChanged);

                
    // 绑定所有数据到dataGridView1
                 this .dataGridView1.DataSource  =  dt;

                
    // 绑定所有数据到dataGridView2
                 this .dataGridView2.DataSource  =   new  DataView(dt);

                
    // 利用DataRelation求汇总表格
                System.Data.DataTable dtGroup1 = dt.DefaultView.ToTable( true , " ID " );
                dtGroup1.TableName 
    =   " Table2 " ;
                ds.Tables.Add(dtGroup1);
                System.Data.DataRelation dr 
    =   new  DataRelation( " relation " , dtGroup1.Columns[ " ID " ], dt.Columns[ " ID " ]);
                ds.Relations.Add(dr);
                dtGroup1.Columns.Add(
    " 总积分 " ).Expression  =   " sum(child(relation).积分) " ;
                dtGroup1.Columns.Add(
    " 板块数 " ).Expression  =   " count(child(relation).板块) " ;
                
    this .dataGridView3.DataSource  =  dtGroup1;
     
            }


            
    void  comboBox1_SelectedIndexChanged( object  sender, EventArgs e)
            
    {
                
    // 设置combobox2和comboBox1同步
                System.Data.DataView dv  =   this .comboBox2.DataSource  as  DataView;
                dv.RowFilter 
    =   string .Format( " ID='{0}' " this .comboBox1.Text);
                
    // 设置dataGridView2和comboBox1同步
                dv  =   this .dataGridView2.DataSource  as  DataView;
                dv.RowFilter 
    =   string .Format( " ID='{0}' " this .comboBox1.Text);

            }
             
        }

    }
  • 相关阅读:
    【Java集合】JDK1.7和1.8 HashMap有什么区别
    【Java集合】为什么HashMap的长度是2的N次幂?
    【VritualEnv】虚拟环境的介绍和基本使用
    【分布式事务】分布式事务解决方案
    【JVM】JVM中的垃圾收集器
    jQuery事件触发前后进行其他的操作
    在jQuery中使用自定义属性
    使用其他服务器引入JS文件
    引入其他服务的JS、和 本地的JS文件,script的属性
    trigger 和 triggerHandler(),自定义事件
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6204950.html
Copyright © 2011-2022 走看看