导航
  • 主页
  • ASP
  • .NET Framework
  • Web Services
  • VB
  • VC
  • 图表区
  • 分析与设计
  • 组件/控件开发
  • LINQ
  • 问答

**如何动态创建模版列,加载的为用户控件(Web User Control)

bzszp 2006-11-20 08:48:51
我使用孟子E章的方法,创建一般控件的模版列没有问题,但是创建自己的用户控件的模版列显示不出来,不知道什么原因。
...全文
158 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bzszp 2006-11-20
好了,问题解决了
我从TemplateControl继承一下就可以了
/// <summary>
/// 动态创建模版列的类
/// </summary>
public class GridViewTemplate :TemplateControl,ITemplate
{
private DataControlRowType templateType;
private string columnName;
private string ucID;

public GridViewTemplate(DataControlRowType type, string colname,string ucId)
{
templateType = type;
columnName = colname;
ucID = ucId;
}

public void InstantiateIn(System.Web.UI.Control container)
{
switch (templateType)
{
case DataControlRowType.Header:
Literal lc = new Literal();
lc.Text = columnName;
container.Controls.Add(lc);
break;
case DataControlRowType.DataRow:
Control tmMuti = LoadControl("WJDCPages/UControls/WUC_TM_MUTI.ascx");
tmMuti.ID = ucID;
container.Controls.Add(tmMuti);
break;
default:
break;
}
}
}
这样没有问题吧?
回复
bzszp 2006-11-20
这样的话就不能写在这个类里面了,在这个类里面不能调用loadcontrol方法

tmMuti.ID = ucID; --就这个id
回复
孟子E章 2006-11-20
什么ID?
回复
bzszp 2006-11-20
而且我要创建多个同样的模版列,
回复
bzszp 2006-11-20
我用过这个方式,
我如果是用这种方式的话,id如何取出来啊?
回复
孟子E章 2006-11-20
// 加载用户控件并将其添加到页面中
Control control = LoadControl("~/MyUserControl.ascx");
container.Controls.Add(control );
回复
孟子E章 2006-11-20
LoadControl
回复
bzszp 2006-11-20
代码如下:
/// <summary>
/// 动态创建模版列的类
/// </summary>
public class GridViewTemplate : ITemplate
{
private DataControlRowType templateType;
private string columnName;
private string ucID;

public GridViewTemplate(DataControlRowType type, string colname,string ucId)
{
templateType = type;
columnName = colname;
ucID = ucId;
}

public void InstantiateIn(System.Web.UI.Control container)
{
switch (templateType)
{
case DataControlRowType.Header:
Literal lc = new Literal();
lc.Text = columnName;
container.Controls.Add(lc);
break;
case DataControlRowType.DataRow:
//WUC_TM_MUTI tmMuti = new WUC_TM_MUTI();//用我定义的用户控件就有问题,显示不出来
TextBox tmMuti = new TextBox(); //用这个没有问题
//tmMuti.RenderControl(
tmMuti.ID = ucID;
container.Controls.Add(tmMuti);

break;
default:
break;
}
}
}
回复
发动态
发帖子
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
社区公告
暂无公告