技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> JavaScript --> 动态加载用户控件到Template

动态加载用户控件到Template

浏览:1795次  出处信息

1. 创建一个用户控件。

以下是代码片段:
namespace Northwind.WebSite.UserControls
{
    public partial class CategoryDetail : System.Web.UI.UserControl
    {
        private Category category;
        public Category Category
        {
            set { category = value; }
            get { return category; }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
        }
        protected void Page_PreRender(object sender, EventArgs e)
        {
            GridViewProducts.DataSource = category.Products;
            GridViewProducts.DataBind();
            LableCategoryName.Text = category.CategoryName;
            LabelTotalPrice.Text = string.Format("Total price: {0}",
                category.Products.Sum(p =>
                    p.UnitPrice * (p.UnitsInStock + p.UnitsOnOrder)));
        }
        public void ExpandCollapsiblePanel()
        {
            CollapsiblePanelExtender1.Collapsed = false;
        }
    }
}

2. 实现ITemplate。

以下是代码片段:
namespace Northwind.WebSite.TemplateControl
{
    public class CategoryDetailTemplate : ITemplate
    {
        public void InstantiateIn(Control container)
        {
            CategoryDetail detail = (CategoryDetail)BuildManager.
                CreateInstanceFromVirtualPath("~/UserControls/CategoryDetail.ascx", typeof(CategoryDetail));
            container.DataBinding += delegate(object sender, EventArgs e)
            {
                IDataItemContainer container1 = container as IDataItemContainer;
                detail.Category = (Category)container1.DataItem;
                if (container1.DataItemIndex == 0)
                {
                    detail.ExpandCollapsiblePanel();
                }
            };
            container.Controls.Add(detail);
        }
    }
}

3. 动态加载。

以下是代码片段:
namespace Northwind.WebSite
{
    public partial class ProductsByCategory : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Repeater1.ItemTemplate = new CategoryDetailTemplate();
            if (!IsPostBack)
            {
                var ds = Category.GetCategories();
                Repeater1.DataSource = ds;
                Repeater1.DataBind();
            }
        }
    }
}

建议继续学习:

  1. 图片轮播控件 Carousel Controls    (阅读:2437)
  2. 为什么说基于ActiveX的“安全控件”一定是不安全的    (阅读:2332)
  3. 动态加载Innodb Plugin    (阅读:2267)
  4. 禁用或启用一个ValidationGroup里的全部验证控件    (阅读:1858)
  5. Android注解式绑定控件,没你想象的那么难    (阅读:1370)
  6. jquery js 动态加载 js文件    (阅读:1333)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1