首次写关于技术方面的文章,一时竟不知道该怎么写。不过正好,我做的项目里有一个要根据员工的工资方案个数来显示员工的工资明细。于是就把这个动态生成DataGrid的方法贴了出来。随便写的,写的不好,仅供大家参考。(有不足的地方,大家尽管提哦!)
1
CreateDataGrid()方法,动态生成多个DataGrid#region CreateDataGrid()方法,动态生成多个DataGrid
2
//faCount是方案个数,也就是要动态生成DataGrid的个数
3
private void CreateDataGrid(string[] faName, int faCount, string ny)
4
{
5
ClassLib.DtaGzcx data = new CPHrms.ClassLib.DtaGzcx();//这个是用来获取数据源的,先不用管它
6
float yfgz = 0;
7
float sfgz = 0;
8
for(int i=0; i<faCount;i++)
9
{
10
Label labFA = new Label();
11
labFA.Text = faName[i].ToString();
12
Panel pl = new Panel();
13
Panel plNull = new Panel();
14
plNull.Height = 20;
15
DataSet[] dsGzxx = new DataSet[10];
16
dsGzxx[i] = data.SelectEmployeeGZXX_1(faName[i].Trim(),Session["ZGDM"].ToString(),ny,Session["ConStr"].ToString());
17
DataGrid[] dg = new DataGrid[faCount];//这个地方好象不用数组也可以
18
dg[i] = new DataGrid();
19
dg[i].AutoGenerateColumns = true;
20
dg[i].ShowHeader = true;
21
dg[i].HeaderStyle.CssClass = "HeadStyle"; //HeadStyle 是在CSS里写的
22
dg[i].AlternatingItemStyle.CssClass = "AlternatingItemStyle";
23
dg[i].ItemStyle.CssClass = "ItemStyle";
24
dg[i].Width = 900;
25
dg[i].DataSource = dsGzxx[i].Tables[0];
26
dg[i].DataBind();
27
pl.Controls.Add(labFA);
28
pl.CssClass = "panel";
29
byDG.Controls.Add(pl); //把DataGrid的标题添加到单元格里
30
byDG.Controls.Add(dg[i]); //紧接着就是DataGrid
31
byDG.Controls.Add(plNull); //然后再添加一个空Panel以便把两个DataGrid分开显示
32
//以下是获得多个DataGrid相同列的数据总和并显示
33
yfgz = yfgz + Convert.ToSingle(dsGzxx[i].Tables[1].Rows[0][0].ToString());
34
sfgz = sfgz + Convert.ToSingle(dsGzxx[i].Tables[1].Rows[0][1].ToString());
35
this.lblCountYFGZ.Text = Convert.ToString(yfgz);
36
this.lblCountSFGZ.Text = Convert.ToString(sfgz);
37
this.lblName.Text = dsGzxx[i].Tables[0].Rows[0]["姓名"].ToString();
38
}
39
}
40
#endregion

CreateDataGrid()方法,动态生成多个DataGrid#region CreateDataGrid()方法,动态生成多个DataGrid2
//faCount是方案个数,也就是要动态生成DataGrid的个数3
private void CreateDataGrid(string[] faName, int faCount, string ny)4

{5
ClassLib.DtaGzcx data = new CPHrms.ClassLib.DtaGzcx();//这个是用来获取数据源的,先不用管它6
float yfgz = 0;7
float sfgz = 0;8
for(int i=0; i<faCount;i++)9

{10
Label labFA = new Label();11
labFA.Text = faName[i].ToString();12
Panel pl = new Panel();13
Panel plNull = new Panel();14
plNull.Height = 20;15
DataSet[] dsGzxx = new DataSet[10];16
dsGzxx[i] = data.SelectEmployeeGZXX_1(faName[i].Trim(),Session["ZGDM"].ToString(),ny,Session["ConStr"].ToString());17
DataGrid[] dg = new DataGrid[faCount];//这个地方好象不用数组也可以18
dg[i] = new DataGrid();19
dg[i].AutoGenerateColumns = true;20
dg[i].ShowHeader = true;21
dg[i].HeaderStyle.CssClass = "HeadStyle"; //HeadStyle 是在CSS里写的22
dg[i].AlternatingItemStyle.CssClass = "AlternatingItemStyle";23
dg[i].ItemStyle.CssClass = "ItemStyle";24
dg[i].Width = 900;25
dg[i].DataSource = dsGzxx[i].Tables[0];26
dg[i].DataBind();27
pl.Controls.Add(labFA);28
pl.CssClass = "panel";29
byDG.Controls.Add(pl); //把DataGrid的标题添加到单元格里 30
byDG.Controls.Add(dg[i]); //紧接着就是DataGrid31
byDG.Controls.Add(plNull); //然后再添加一个空Panel以便把两个DataGrid分开显示32
//以下是获得多个DataGrid相同列的数据总和并显示33
yfgz = yfgz + Convert.ToSingle(dsGzxx[i].Tables[1].Rows[0][0].ToString());34
sfgz = sfgz + Convert.ToSingle(dsGzxx[i].Tables[1].Rows[0][1].ToString());35
this.lblCountYFGZ.Text = Convert.ToString(yfgz);36
this.lblCountSFGZ.Text = Convert.ToString(sfgz);37
this.lblName.Text = dsGzxx[i].Tables[0].Rows[0]["姓名"].ToString();38
}39
}40
#endregion
浙公网安备 33010602011771号