用户控件从 page中取数据

看到标题可能就能想到要要说的是什么了

  之前在做一个项目的首页,情况是首页上的东西都是一块块的。所以我就吧一小块给提取出来做成了用户控件。这样在需要的地方直接拿过来就可以了。

  首页做完之后有个问题就是,反映很慢。想来想去是访问数据库的次数太多。于是想办法一次吧所有需要的数据都取出来。 这个简单。但是要怎么在用户控件中获得这些数据呢。

  我用了最简单的方法。用户控件中有一个属性Page ,哈哈。明白了吧 。直接那到page 强转成需要的Page对象。就可以取得里面的数据了。但是这里取出来的是所有的数据不一定就是当前控件所需要的数据。

  给数据做一个简单的过滤就可以了下面 附上关键代码 主要看个思路

protected int liantype1;

        public string Country { get; set; }
        protected string sname;
        protected string LianBei = "lianindex";
        protected void Page_Load(object sender, EventArgs e)
        {

            List<SaishiModel> ss = ((Index)this.Page).saishi.FindAll(GetSaishi);//取数据
            RepLiansaiBeisai.DataSource = ss;
            if (ss.Count > 0)
                liantype1 = ss[0].LiansaiType;
            RepLiansaiBeisai.DataBind();
        }

        protected void RepLiansaiBeisai_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            ListItemType t = e.Item.ItemType;
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                Repeater rep = (Repeater)e.Item.FindControl("RepSaiji");
                SaishiModel dataItem = (SaishiModel)e.Item.DataItem;
                sname = dataItem.Sname;
                rep.DataSource = ((Index)this.Page).saiji.FindAll(GetSaiji);
                rep.DataBind();
            }
        }
       //过滤方法
        private bool GetSaishi(SaishiModel saishi)
        {
            return saishi.Area == Country;
        }
        private bool GetSaiji(LiansaiModel saiji)
        {
            return saiji.SName == this.sname;
        }

这里的过滤是通过 list 集合的FindAll 方法 原来可以用 拉姆达 表达式的可是悲剧的我还是2.0 写了两委托

这里在附上一个我原来的做法 page中的数据是table 

过滤table 无非就是遍历table 然后弄个新的tabl出来 这里主要是没有从新构建datarow

 

 

DataTable totalTable = ((Index)this.Page).saishi
DataTable dtsource = totalTable.Clone();
foreach (DataRow row in totalTable.Rows)
{
    if (row["name"].ToString() == country)
    {
        dtsource.Rows.Add(row.ItemArray);
    }
}
return dtsource;

虽然简单 我相信一定有人用的上

转载于:https://www.cnblogs.com/wxzl/archive/2012/05/31/list%e8%bf%87%e6%bb%a4_table%e8%bf%87%e6%bb%a4.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值