aspx
페이지에있는 서버 컨트롤을 만들고 있습니다. 사용자가 메뉴 옵션을 선택하면 html 컨트롤 (선택, 입력 등)이 동적으로 추가됩니다. 사용자 정의 컨트롤을 사용하여이 작업을 수행 할 수 있지만 서버 컨트롤에서이 작업을 수행하는 방법을 잘 모르겠습니다.어떻게 동적 HTML을 서버 컨트롤에 추가 할 수 있습니까?
페이지에 이미 앉아 있어도 동적 HTML을 컨트롤에 추가 할 수있는 방법을 알려주는 사람이 있습니까?
aspx
페이지에있는 서버 컨트롤을 만들고 있습니다. 사용자가 메뉴 옵션을 선택하면 html 컨트롤 (선택, 입력 등)이 동적으로 추가됩니다. 사용자 정의 컨트롤을 사용하여이 작업을 수행 할 수 있지만 서버 컨트롤에서이 작업을 수행하는 방법을 잘 모르겠습니다.어떻게 동적 HTML을 서버 컨트롤에 추가 할 수 있습니까?
페이지에 이미 앉아 있어도 동적 HTML을 컨트롤에 추가 할 수있는 방법을 알려주는 사람이 있습니까?
서버 컨트롤의 출력으로 여러 컨트롤을 추가 할 계획이므로 CompositeControl에서 상속하는 것을 고려해야합니다.이 컨트롤은 여러 가지 구성 컨트롤과 함께 작동하도록 설계되어 상태 및 상태 유지와 같은 일반적인 작업을 수행하는 데 필요한 코드를 최소화합니다. 구성 제어 이벤트 처리
자식 컨트롤을 추가하려면 CreateChildControls을 재정의해야합니다. CreateChildControls
당신은 당신이 일반적으로 어떤에 적용하는 것과 동일한 규칙을 적용하는 데 필요한 ASP.Net page life-cycle
동안 여러 번 호출하기 때문에 당신이 자식 컨트롤이 생성 된 경우 지정 this.ChildControlsCreated = true;
를 사용한다이 방법의 끝에서이 필요하다 나는이 그냥 서버 컨트롤과 마찬가지로 상속 추측하고있어
[DefaultProperty("UserText")]
[ToolboxData(@"<{0}:UserPassword runat=server UserText="""" PasswordText="""" />")]
public class UserPassword : CompositeControl
{
public event EventHandler Submitted = delegate { };
[Bindable(true)]
[Category("Appearance")]
[Description("User text")]
[DefaultValue("")]
[Localizable(true)]
public string UserText
{
get
{
var t = this.FindControl("Username") as TextBox;
return t.Text;
}
set
{
var t = this.FindControl("Username") as TextBox;
t.Text = value;
}
}
[Bindable(true)]
[Category("Appearance")]
[Description("Password text")]
[DefaultValue("")]
[Localizable(true)]
public string PasswordText
{
get
{
var t = this.FindControl("Password") as TextBox;
return t.Text;
}
set
{
var t = this.FindControl("Password") as TextBox;
t.Text = value;
}
}
protected override void CreateChildControls()
{
var p = new Panel { Width= new Unit(200), BackColor = Color.Silver };
var ul = new Label { Text = "Username: " };
var u = new TextBox { ID = "Username" };
var pal = new Label { Text = "Password: " };
var pa = new TextBox { ID = "Password", TextMode = TextBoxMode.Password };
var l = new Literal { Text = "<br />" };
var b = new Button { Text = "Log in" };
b.Click += (x, y) => this.Submitted(x, y);
p.Controls.Add(ul);
p.Controls.Add(u);
p.Controls.Add(l);
p.Controls.Add(pal);
p.Controls.Add(pa);
p.Controls.Add(l);
p.Controls.Add(l);
p.Controls.Add(b);
this.Controls.Add(p);
this.ChildControlsCreated = true;
}
}
: 서버 컨트롤은, 예를 들어 고유 클라이언트 ID
이 간단한 예입니다있을 것이다 그 자식 컨트롤을 보장하는 INamingContainer 인터페이스를 구현? – Yatrix
예. 이것은 서버 컨트롤입니다. 서버 컨트롤을 만들 때'Control','WebControl','CompositeControl' 또는'TextBox' 나'Button'과 같은 특정 컨트롤을 상속받을 수 있습니다 – Jupaol