讓我只是在這個前言:我谷歌搜索這個高低,並找到了很多的例子和解決方案,我仍然無法弄清楚。將一個參數傳遞給一個以編程方式創建的用戶控件
在後面文件.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