让我只是在这个前言:我谷歌搜索这个高低,并找到了很多的例子和解决方案,我仍然无法弄清楚。将一个参数传递给一个以编程方式创建的用户控件
在后面文件.aspx.cs代码,我有以下:
NewsArticleList listall = NewsArticleManager.GetListAll();
foreach (NewsArticle x in listall)
{
Control c1 = (NewsArticleContainer)LoadControl("~/UserControls/NewsArticleContainer.ascx");
((NewsArticleContainer)c1).PopulateWithNewsArticle(x);
mynewspanel.Controls.Add(c1);
}
我有称为PopulateWithNewsArticle(用户控制的方法),它接受一个NewsArticle,并填充用户控制的网络控制相应:
public void PopulateWithNewsArticles(NewsArticle x)
{
lbltitle.Text = x.Title;
lblcategory.Text = x.Category;
//...etc.
}
现在这个工程,这是好的。但是我想学习/理解的是,我如何在LoadControl()时将NewsArticle x传递给用户控件,以便在创建用户控件时,我可以将NewsArticle解包到用户控件的Page_Load中,并设置当用户控件被实例化时,Web控件的属性从右到下,而不是在用PopulateWithNewsArticle方法实例化后(如我现在拥有它)。
+1我没有意识到LoadControl可能需要重载构造 – 2012-08-03 06:19:06
这是真棒,非常感谢。我的下一个问题是,在通过重载的LoadControl()传递参数后,如何在用户控件的构造函数的另一端接收和解包这些参数?它只是“知道”使用这些参数的构造函数? – CptSupermrkt 2012-08-03 06:23:26
实际上,它看起来像重载需要不同的参数。如果你想使用对象数组,你不能给它一个字符串作为路径,但是你需要给它一个Type。 – CptSupermrkt 2012-08-03 07:22:22