VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > C#教程 >
  • c#绑定DataView和DataTable的几个技巧

制作者:剑锋冷月 单位:无忧统计网,www.51stat.net
 

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

  参考界面如下

C#客户端绑定DataView和DataTable的几个技巧

  程序代码如下

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);
  
    }    
  }
}



相关教程