2009-02-03 6 views
6

this post에 따라 페이지에 사용자 지정 사용자 정의 컨트롤을 동적으로 추가하고 있습니다.동적으로 추가 된 UserControl의 속성 설정

그러나 페이지에 추가 할 때 사용자 정의 컨트롤에서 속성을 설정해야합니다. 어떻게해야합니까? 나는를 추가

(재산 ... 예를 들어 공공 INT의 someId)

나는 공공 필드 사용자 정의 사용자 제어 할 수 있습니다

:

코드 조각은 좋은 :)

세부 것 페이지에 대한 UserControl은 UserControl입니다. 그냥 그것을 MyCustomUCType으로 캐스팅하고 캐스트 컨트롤에서 속성을 설정합니까?

p.s. 결국 내 자신의 질문에 대답 한 것 같습니다.

+0

속성을 설정하면 어떤 의미입니까? html 속성? 언제 당신이 DataBound 이벤트 또는 뭔가에 속성을 추가하려고? 어떤 이벤트에서 컨트롤을 만들고 있습니까? – bendewey

+0

연결된 게시물이 그가 무엇을하려하는지 설명합니다 –

답변

10

아, 내가 대답입니다. 간단히 말해서 네, 사용자 정의 유형으로 캐스팅하십시오.

나머지 답변은 참조 용으로 남겨 두겠습니다. 필요하지는 않지만 표시됩니다.


다른 문제의 코드에서 차입하고, 모든 사용자 컨트롤이 같은 기본 클래스에서 상속 할 수 있다고 가정, 당신은이 작업을 수행 할 수 있습니다. 장소 어디에서,

public partial class SampleControl2 : MyBaseControl 
{ 
    .... 

다음 :

public class MyBaseControl : System.Web.UI.UserControl 
{ 
    public string MyProperty 
    { 
     get { return ViewState["MyProp"] as string; } 
     set { ViewState["MyProp"] = value; } 
    } 
} 

그런 다음 사용자 대신 UserControl을 당신의 기본 클래스에서 상속 컨트롤 업데이트 :

기본 제어 역할을하는 새로운 클래스를 만듭니다 컨트롤을로드하려면 다음을 변경하십시오.

UserControl uc = (UserControl)LoadControl(controlPath); 
PlaceHolder1.Controls.Add(uc); 

to :

MyBaseControl uc = (MyBaseControl)LoadControl(controlPath); 
uc.MyProperty = "foo"; 
PlaceHolder1.Controls.Add(uc); 
+0

저는 이것이 웹 애플리케이션 프로젝트에서만 작동하고 웹 사이트 프로젝트에서는 작동하지 않는다고 생각했습니다. 아직도 그렇습니까? –

+0

상관없이 작동해야합니다. 나는 그걸로 문제가 없었어요. –

1

예, 컨트롤을 적절한 유형으로 캐스트하기 만하면됩니다. EX :

((MyControl)control).MyProperty = "blah"; 
+0

이것은 사용자 컨트롤이있는 웹 사이트 프로젝트에서는 작동하지 않습니다. –

+0

잘 작동합니다. –

+0

페이지에 컨트롤을 등록하면 작동합니다. –

2

"나는 UserControl 페이지에 추가 바와 같이, 그 유형은 UserControl을하다 난 그냥 캐스트 컨트롤 속성 을 MyCustomUCType에 그것을 캐스트 및 설정 마십시오.?"

그게 내가하는 것입니다. 다른 컨트롤을로드하는 예제 코드를 실제로 사용하는 경우 if (x는 ControlType)도 사용합니다.

if(x is Label) 
{  
    Label l = x as Label; 
    l.Text = "Batman!"; 
} 
else 
    //... 

편집 : 이제 당신은 추가 설명을 추가하기 전에 2.0 호환

+0

답이 좋다면 3.5 프레임 워크를 사용하는 것처럼 보입니다. 2.0은 2.0입니다. 고맙습니다. –

+0

그냥 var을 Label로 바꾸면 2.0과 호환 될 것입니다. –

관련 문제