datalist通过2次绑定生成动态表格

这个表格的数据涉及到两表:
即:学院表和专业表。其中学院包括若干专业,有个XYID进行关联。
学院表:

专业表:


先说说前台代码,大致由一固定的表格,和若干动态表格构成,这里我用到了dataLisT这个控件。

            院系

            专业

             学历

            总计

            本科合计

       

       

       
       


   
     

       
       

        
       

   


效果如下:

后台代码如下:

 DB db = new DB();
    public static int count=0;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            dlbind();
        }
    }
    private void dlbind()
    {
        DataTable dt = new DataTable();
        dt = db.SqlDataset("select * from ssyx");
        dlzy.DataSource = dt.DefaultView;
        dlzy.DataBind();
    }
    protected void dlzy_ItemDataBound(object sender, DataListItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            Label lab = (Label)e.Item.FindControl("lblzy");
            int id = Convert.ToInt32(DataBinder.Eval(e.Item.DataItem, "yxid"));
            string cmdStr = "select * from zyjieshao where ssyx=" + id;
            DataTable dt=new DataTable();
            dt=db.SqlDataset(cmdStr);
            lab.Text = "

";
                    lab.Text += dt.Rows[i][1].ToString();
                    lab.Text+="
本科";
                    lab.Text += dt.Rows[i][7].ToString()+"
";

        }
    }

其中DB类是自己写的简单的底层的数据库连接类,这里就不详细说明了,我用了里面的一方法SqlDataset()返回的是个DATATABLE值。
这里最关键的地方在于在DATALIST里面进行数据再次邦定,这里是在自带的ItemDataBound()方法里面实现的。其中  int id = Convert.ToInt32(DataBinder.Eval(e.Item.DataItem, "yxid"));
是查找出第一次绑定时的学院ID,因为我们需要这个ID来找到其所属的若干专业。
还有COUNT这个值是用来计算人数总数的,很简单,不再赘述。
这个我自己想到的,用asp:Label 这个控件来装载标记语言,使之动态生成了右边的表格。
效果如下:

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639172/viewspace-610371/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12639172/viewspace-610371/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值