如何动态创建用户控件的实例?

BuglePan 2003-02-12 11:56:15
我想DataGrid进入Edit状态时,在Cell中加载自己定义的用户控件(Web User Control),请问如何实现?

这样好像不行:

在DataBound事件中定义:
WebUserControlMyControl test;
e.Item.Cells[1].Controls.Clear();
e.Item.Cells[1].Controls.Add(test);

谢谢!
...全文
146 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cherno 2003-02-13
  • 打赏
  • 举报
回复
WebUserControlMyControl test=new WebUserControlMyControl();
BuglePan 2003-02-13
  • 打赏
  • 举报
回复
对不起,刚才漏了,是这一段:
///自定义datagriditem放在databind之前
TemplateColumn genericcolumn = new TemplateColumn();
genericcolumn.HeaderText ="字段1";
genericcolumn.HeaderStyle.Wrap=false;
genericcolumn.ItemTemplate = new GenericItem("col1");
if (!Readonly)
{
genericcolumn.EditItemTemplate = new ValidateEditItem("col1");
}
///
BuglePan 2003-02-13
  • 打赏
  • 举报
回复
请教 fengy2k:
这一段应该放在哪里?能否说得具体一点?
谢谢
fengy2k 2003-02-13
  • 打赏
  • 举报
回复
根本就是定义DataGrid的编辑模板
fengy2k 2003-02-13
  • 打赏
  • 举报
回复
///自定义datagriditem放在databind之前
TemplateColumn genericcolumn = new TemplateColumn();
genericcolumn.HeaderText ="字段1";
genericcolumn.HeaderStyle.Wrap=false;
genericcolumn.ItemTemplate = new GenericItem("col1");
if (!Readonly)
{
genericcolumn.EditItemTemplate = new ValidateEditItem("col1");
}
///
public class GenericItem : ITemplate
{
private column string;

public GenericItem(string column)
{
this.column = column;
}
public void InstantiateIn(Control container)
{
Literal l = new Literal();
l.ID=this.column
l.DataBinding += new EventHandler(this.lcBindData);
container.Controls.Add(l);

}

public void lcBindData(object sender, EventArgs e)
{
Literal l = (Literal) sender;
DataGridItem container = (DataGridItem) l.NamingContainer;
string colText=((DataRowView) container.DataItem)[column].ToString();
if ((column.fieldusertype=="5")||(column.fieldusertype=="6"))
l.Text = colText;

}
}
///

public class ValidateEditItem : ITemplate
{
private string column;
public ValidateEditItem(string column)
{
this.column = column;
}

public void InstantiateIn(Control container)
{

TextBox tb = new TextBox();
tb.DataBinding += new EventHandler(this.BindData);
tb.ID = this.column;
tb.Width=Unit.Parse("100%");
container.Controls.Add(tb);
}

public void BindData(object sender, EventArgs e)
{
TextBox tb = (TextBox) sender;
DataGridItem container = (DataGridItem)tb.NamingContainer;
tb.Text = ((DataRowView) container.DataItem)[column].ToString();
}
}
BuglePan 2003-02-13
  • 打赏
  • 举报
回复
如何使用DATAGRID的接口呢?
ar7_top 2003-02-13
  • 打赏
  • 举报
回复
需要使用 DataGrid 的接口才行
Jain123 2003-02-13
  • 打赏
  • 举报
回复
try:
((WebUserControlMyControl )e.Item.Cells[1].Controls[0]).Clear();
BuglePan 2003-02-13
  • 打赏
  • 举报
回复
但是这样无法通过编译:
Cannot Create an instance of the abstract class or interface
bingapex 2003-02-13
  • 打赏
  • 举报
回复
123

110,570

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧