首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > ASP >

asp.net动态增添控件并获取值

2012-10-17 
asp.net动态添加控件并获取值做教师考评系统前台界面,要求加上批量处理,需要在前台显示被测评人的人名,最

asp.net动态添加控件并获取值

做教师考评系统前台界面,要求加上批量处理,需要在前台显示被测评人的人名,最开始使用的是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);    }


 

最终显示效果为:

asp.net动态增添控件并获取值

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

 

热点排行