根据工作需要又有一个动态生成table的需求:实现按照单位把具有同一类别的人员按照表格形式动态输出
/// 查询数据库得到具有此种角色的单位数目
string strdept="select dept.d_id,d_name from user_sys,user_role,role,dept "
+"where user_sys.u_id =user_role.u_id and user_role.r_id=role.r_id "
+"and user_sys.d_id=dept.d_id and role.r_name='事务添加' group by dept.d_id,dept.d_name";
OracleDataReader odrdept = db.odr(strdept);
///以单位数目进行循环生成table
while (odrdept.Read())
{
#region 根据单位信息得到本单位拥有此角色所有人员
string struser = "select user_sys.u_id,user_sys.u_mc from user_sys,user_role,role,dept where "
+"user_sys.u_id =user_role.u_id and user_role.r_id=role.r_id "
+" and user_sys.d_id=dept.d_id and role.r_name='事务添加' and user_sys.d_id="+odrdept["d_id"].ToString();
OracleDataReader odruser = db.odr(struser);
int loopindex=0;
int looprange = 7;
#endregion
#region 创建并设置table属性
Table tb = new Table();
tb.Width = 800;
tb.BorderStyle = BorderStyle.Double;
tb.Caption = odrdept["d_name"].ToString();
tb.BorderColor = ColorTranslator.FromHtml("#336666");
tb.BorderWidth = 3;
tb.CellPadding = 0;
tb.CellSpacing = 0;
#endregion
while (odruser.Read())
{
#region 创建tablerow并生成一行记录
loopindex = 0;
TableRow tr = new TableRow();
do
{
HyperLink hp = new HyperLink();
hp.Text = odruser["u_mc"].ToString();
hp.NavigateUrl = "DeansCalendar.aspx?accid="+odruser["u_id"].ToString();
TableCell tc = new TableCell();
tc.VerticalAlign = VerticalAlign.Middle;
tc.Style.Add("padding-top", "5px");
tc.BorderWidth = 1;
tc.Height = 18;
tc.HorizontalAlign = HorizontalAlign.Center;
tc.Controls.Add(hp);
tr.Cells.Add(tc);
loopindex++;
}
while ((loopindex < looprange) && odruser.Read());
tb.Rows.Add(tr);
#endregion
}
form1.Controls.Add(tb);
odruser.Close();
}
odrdept.Close();