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

    }
  }
}

时间: 2024-08-03 14:13:13

C#客户端绑定DataView和DataTable的几个技巧的相关文章

js 绑定键盘鼠标事件示例代码_javascript技巧

1.绑定键盘回车事件(注意:用jq提交时想同时按回车键可以提交,此时就不要用form了.) 复制代码 代码如下: document.onkeydown = function(evt){ var evt = window.event?window.event:evt; if(evt.keyCode==13){ subcomment(); //如果按下的是回车键,则执行对应的js函数 } }

使用AjaxPro.Net框架实现在客户端调用服务端的方法_实用技巧

此文档将使用AjaxPro.Net框架实现Ajax功能:在客户端异步调用服务端方法.AjaxPro.Net是一个优秀的.net环境下的Ajax框架,用法很简单,可以查阅相关资料,本文档是一个简单的实例讲述使用AjaxPro的几个关键点. 1.下载AjaxPro 组件.并将AjaxPro.dll引用到网站(或项目).下载:Download latest version 7.7.31.1. 2.修改Web.config.在 <system.web> 元素中添加以下代码. <configura

PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法_php技巧

本文实例讲述了PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法.分享给大家供大家参考,具体如下: php连接oracle数据库虽然不是最佳拍档,但组内开发确实有这样需求.如果没有参考合适的文档,这个过程还是挺折磨人的,下面是一个记录,原型是国外的一篇博客 Installing PDO_OCI and OCI8 PHP extensions on CentOS 6.4 64bit . 假设你已经安装好php的环境,php版本为5.3,要连接的oracle服务器是 11g R2,操作

php中获取远程客户端的真实ip地址的方法_php技巧

(1).REMOTE_ADDR:浏览当前页面的用户计算机的ip地址 (2).HTTP_X_FORWARDED_FOR: 浏览当前页面的用户计算机的网关 (3).HTTP_CLIENT_IP:客户端的ip 在PHP 中使用 $_SERVER["REMOTE_ADDR"] 来取得客户端的 IP 地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址.要想透过代理服务器取得客户端的真实 IP 地址,就要使用 $_SERVER["

PHP 获取客户端真实IP地址多种方法小结_php技巧

经过复杂的判断与算是的获取IP地址函数 复制代码 代码如下: function getIP() { if (getenv('HTTP_CLIENT_IP')) { $ip = getenv('HTTP_CLIENT_IP'); } elseif (getenv('HTTP_X_FORWARDED_FOR')) { $ip = getenv('HTTP_X_FORWARDED_FOR'); } elseif (getenv('HTTP_X_FORWARDED')) { $ip = getenv('

浅谈JavaScript事件绑定的常用方法及其优缺点分析_javascript技巧

传统方式  element.onclick = function(e){ // ... };  1.  传统绑定的优点 非常简单和稳定,可以确保它在你使用的不同浏览器中运作一致 处理事件时,this关键字引用的是当前元素,这很有帮组 2. 传统绑定的缺点 传统方法只会在事件冒泡中运行,而非捕获和冒泡 一个元素一次只能绑定一个事件处理函数.新绑定的事件处理函数会覆盖旧的事件处理函数 事件对象参数(e)仅非IE浏览器可用 W3C方式  element.addEventListener('click'

asp.net 枚举文件里面的数字绑定到DropDownList里面去_实用技巧

复制代码 代码如下: public class AppEnum { public enum PointLogType : int { /// <summary> /// Email确认 /// </summary> [Description("Email确认")] Recruit = 1, //新客户激活+ /// <summary> /// 老客户回馈 /// </summary> [Description("老客户回馈&qu

vue.js学习笔记之绑定style样式和class列表_javascript技巧

数据绑定一个常见需求是操作元素的 class 列表和它的内联样式.因为它们都是 attribute,我们可以用 v-bind 处理它们:只需要计算出表达式最终的字符串.不过,字符串拼接麻烦又易错.因此,在 v-bind 用于 class 和 style 时,Vue.js 专门增强了它.表达式的结果类型除了字符串之外,还可以是对象或数组. 一.绑定Class属性. 绑定数据用v-bind:命令,简写成: 语法:<div v-bind:class="{ active: isActive }&q

Js如何判断客户端是PC还是手持设备简单分析_javascript技巧

在工作过程中,许多朋友会经常用到js判断客户端是PC还是手持设备,今天将提供以下方法function IsPC() { var userAgentInfo = navigator.userAgent; var Agents = new Array("Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"); var