这几个问题算不上高级技巧,但是的确还有很多人不知道,尤其是对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.DataTabledt
=
new
DataTable();
System.Data.DataSetds
=
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(DataTabledt,
string
Name,
string
Catalog,
int
Salary)

...
{
System.Data.DataRowdrow
=
dt.NewRow();
drow[
"
ID
"
]
=
Name;
drow[
"
板块
"
]
=
Catalog;
drow[
"
积分
"
]
=
Salary;
dt.Rows.Add(drow);
}


private
void
Form1_Load(
object
sender,EventArgse)

...
{

//
绑定所有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.DataTabledtGroup1
=
dt.DefaultView.ToTable(
true
,
"
ID
"
);
dtGroup1.TableName
=
"
Table2
"
;
ds.Tables.Add(dtGroup1);
System.Data.DataRelationdr
=
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,EventArgse)

...
{
//
设置combobox2和comboBox1同步
System.Data.DataViewdv
=
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);

}
}
}