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

程序代码如下
<div style="padding: 4px 5.4pt; width: 95%;"> usingSystem;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Windows.Forms;

namespaceWindowsApplication6
 ...{
publicpartialclassForm1:Form
 ...{
publicForm1()
 ...{
InitializeComponent();
initData();
}

System.Data.DataTabledt=newDataTable();
System.Data.DataSetds=newDataSet();

 /**////<summary>
///初始化数据
///</summary>
privatevoidinitData()
 ...{
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);
}

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


privatevoidForm1_Load(objectsender,EventArgse)
 ...{

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

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

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

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

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

//利用DataRelation求汇总表格
System.Data.DataTabledtGroup1=dt.DefaultView.ToTable(true,"ID");
dtGroup1.TableName="Table2";
ds.Tables.Add(dtGroup1);
System.Data.DataRelationdr=newDataRelation("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;

}

voidcomboBox1_SelectedIndexChanged(objectsender,EventArgse)
 ...{
//设置combobox2和comboBox1同步
System.Data.DataViewdv=this.comboBox2.DataSourceasDataView;
dv.RowFilter=string.Format("ID='{0}'",this.comboBox1.Text);
//设置dataGridView2和comboBox1同步
dv=this.dataGridView2.DataSourceasDataView;
dv.RowFilter=string.Format("ID='{0}'",this.comboBox1.Text);

}
}
} |
|