动态加载asp.net用户控件问题

freeman82x 2006-03-10 09:06:37
我写了一个简单的测试ascx文件;;

ascx文件中包含一个checkboxlist控件与一个button控件;
checkboxlist的值在ascx文件的page_load()中绑定了数据,,然后button控件有一个click()事件处理函数当点击BUTTON时用response.write显示出被选中的CHECKBOX的值。

在test.aspx文件中我想动态创建这个ascx用户控件.在page_load()中是这样写的.

myascx test=(myascx)FindControl("myascx.ascx");
Form1.Controls.Add(test);//Form1类型为HtmlForm;

结果出错提示“对象未被引用null"即test对象为空;

我在社区中搜索了很多都是用这种方法动态创建用户控件的;那位朋友能详细解释一下。怎么才能正确动态创建呢?


...全文
97 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
freeman82x 2006-03-10
  • 打赏
  • 举报
回复
真搞不懂..它就是说“对象未被引用"
myascx test=(myascx)FindControl("myascx.ascx");
Form1.Controls.Add(test);//Form1类型为HtmlForm;

走到test.Name="test";这里就报错了..说test对象为空..
aaron_lly 2006-03-10
  • 打赏
  • 举报
回复
myascx test=(myascx)FindControl("myascx.ascx");
page.Controls.Add(test);


或者是建一个placeholder控件,ID为p
myascx test=(myascx)FindControl("myascx.ascx");
p.Controls.Add(test);
zkxp 2006-03-10
  • 打赏
  • 举报
回复
刚好这几天我也在整动态加载自定义控件,这是我整好正在用的代码
for (int i = loopstart; i < loopend; i++)
{
DataRow dr = dt.Rows[i];
NewsLister lst = new NewsLister();
lst = (NewsLister) Page.LoadControl("Component/NewsLister.ascx");
lst.ID = "lst" + i;
lst.CID = (int)dr["NewsID"];
lst.Title = dr["NewsName"].ToString();
lst.Explain = dr["Explain"].ToString();
lst.Formart = dr["Format"].ToString();
lst.LinkUrl = dr["LinkUrl"].ToString();
//lst.BgColor = dr["BgColor"].ToString();
lst.Content = dr["Content"].ToString();
lst.AllowedGroups = dr["AllowedGroups"].ToString();
lst.Bind();
PanelNews.Visible = true;
PanelNews.Controls.Add(lst);
}
freeman82x 2006-03-10
  • 打赏
  • 举报
回复
能不能说明白点啊??拜托!给点代码啊
czhenq 2006-03-10
  • 打赏
  • 举报
回复
创建控件的代码必须每次加载页面的时候都执行

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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