다음과 같이 간단히 설명 드리겠습니다.이 점을 높이 평가하고 많은 예제와 솔루션을 찾았으나 여전히 파악할 수 없습니다. 파일 뒤에 .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.
}
이제는 정상적으로 작동합니다. 하지만 내가 배우고/이해하고 싶은 것은 사용자 컨트롤 생성시 사용자 컨트롤의 Page_Load에 NewsArticle을 풀 수 있도록 LoadControl()을 사용할 때 NewsArticle x를 사용자 정의 컨트롤로 전달할 수있는 방법입니다. PopulateWithNewsArticle 메서드로 인스턴스화 한 후 사용자 컨트롤을 인스턴스화 할 때 웹 컨트롤 속성을 오른쪽에서부터 가져옵니다 (지금 가지고있는 것처럼).
+1 나는 LoadControl이 끝내 오버로드 된 생성자 –
, 덕분에 많이 걸릴 수 몰랐 :이 같은 초기화 코드를 가지게됩니다 – CptSupermrkt
사실 과부하가 다른 매개 변수를 사용하는 것처럼 보입니다. 객체 배열을 사용하려면 경로에 문자열을 지정할 수는 없지만 유형을 지정해야합니다. – CptSupermrkt