日期:2014-05-17 浏览次数:21168 次
做教师考评系统前台界面,要求加上批量处理,需要在前台显示被测评人的人名,最开始使用的是treeview控件,但是因为每组分类的人数不均,多的话可能一百条,所以用treeview就显得有些力不从心了,最终决定做一个既能像treeview一样是树形结构,又能没列显示多条数据使空间变小的控件组。
Treeview控件的灵活性就在于它是后台绑定的,数据可以根据数据库的变更而更新,所以,我们要想实现这一效果,必须得用到动态绑定控件。
前台代码:
<asp:Button ID="createbutton" runat="server" Text="显示按钮"
onclick="createbutton_Click" />
<asp:Table ID="HolderTable" CssClass ="tab" runat="server"
BorderColor="#000066" BorderStyle="Solid"></asp:Table>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
在后台执行数据绑定:
void CreateControl()
{
MgrDivisionManager division = new MgrDivisionManager();
DataTable dat = division.QueryAllDivision();
MgrCriticsMain staff = new MgrCriticsMain();
if (ViewState["CreateControl"] == null) return; for (int x = 0; x < dat.Rows.Count; x++)
{
TableRow row = new TableRow();
TableCell cell = new TableCell();
EnStaff enStaff = new EnStaff();
enStaff.EmployeeID = "6";
enStaff.GradeGroupID = Convert.ToInt32(dat.Rows[x][0].ToString());
DataTable dtStaff = new DataTable();
dtStaff = staff.QueryEligibleByCritics(enStaff);
if (dtStaff.Rows.Count > 0)
{
Button bt = new Button();
bt.Text = dat.Rows[x][1].ToString();
bt.ID = dat.Rows[x][0].ToString();
bt.Width = 200;
CheckBoxList cblist = new CheckBoxList();
cblist.DataSource = dtStaff;
cblist.ID = "cblist" + dat.Rows[x][0].ToString(); ;
cblist.DataTextField = "参评者";
cblist.DataValueField = "编号";
cblist.RepeatColumns = 10;
cblist.DataBind();
cell.Controls.Add(bt);
cell.Controls.Add(cblist);
row.Cells.Add(cell);
HolderTable.Rows.Add(row);
}
}
}
当然,这样显示是没有问题了,显示出来的目的就是为了使用,所以,我们还需要从后台获取绑定的控件的值
protected void Button1_Click(object sender, EventArgs e)
{
CheckBoxList cbk = HolderTable.FindControl("cblist1") as CheckBoxList;
string selval = "";
for(int i=0;i<cbk.Items.Count;i++)
{
if(cbk.Items[i].Selected )
{
if (cbk.Items[i].Text.IndexOf("其它") != -1)
{
selval += "|";
}
else
{
selval += cbk.Items[i].Text + "|";
}
}
}
Response.Write( selval);
}
最终显示效果为:

最开始在做treeview之前,我们就认为这是一个不可能实现的工作,最终我们实现了,在需要修改的时候我同样认为这是一个很需要时间的工作,最终也就半天就完成了,其实通过这次改动也就发现,只要有需求,就有思考,就能做出来。
&