现在的位置: 首页 > 综合 > 正文

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

2012年06月10日 ⁄ 综合 ⁄ 共 3213字 ⁄ 字号 评论关闭

这几个问题算不上高级技巧,但是的确还有很多人不知道,尤其是对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);


        }


         

    }




}

抱歉!评论已关闭.