1
ASP.NET 팝업을 사용하여 항목을 동적으로 추가하는 Listbox가 있습니다 (세션을 사용하여 포스트 백간에 목록 저장). 항목이 목록 상자에 추가되면 내가 새로 만들 수있는 단추의 색을 변경하기 위해 클릭 할 수있는 ImageButton을 추가하려고합니다. Page_Init에서 컨트롤을 추가하는 것과 같이 뭔가 다르게해야한다는 것을 알고 있지만 버튼 추가 이벤트 (cmdAdd_Click
)는 아직 사라지지 않았습니다. 나는 그것을 깔끔하고 단순한 방법으로 이해하는 것처럼 보일 수 없다.클릭 이벤트 중 클릭 가능한 컨트롤 추가 ASP.NET
에서 .aspx은 니펫을 :
<asp:Button ID="cmdAdd" runat="server" OnClick="cmdAdd_Click" />
<asp:ListBox ID="lboObjects" runat="server"></asp:ListBox>
<asp:Panel ID="pnlButtons" runat="server"></asp:Panel>
.cs 코드 스 니펫 뒤에 :
protected void cmdAdd_Click(object sender, ImageClickEventArgs e)
{
// Simplified for Brevity
((List<Line>)Session["lstObjects"]).Add("Unique Object"); // the object will be unique.
lboObjects.DataSource = ((List<Line>)Session["lstObjects"]);
lboObjects.DataBind();
// Clear out b/c I intend on having a cmdRemove_Click, but not showing for simplicity
pnlButtons.Controls.Clear();
foreach (object obj in ((List<Line>)Session["lstObjects"]))
{
ImageButton imageButton = new ImageButton();
imageButton.ID = obj.ToString();
imageButton.Click += cmdChangeColor_Click;
pnlButtons.Controls.Add(imageButton);
}
}
protected void cmdChangeColor_Click(object sender, ImageClickEventArgs e)
{........}
, 어떻게 내가 cmdAdd_Click 이벤트를 실행 한 후 후 Page_Init 일이 어떻게해야합니까? 어떻게 든 목록을 추가 한 다음 다른 Page_Init을 처리하기 위해 다른 Postback을 보냅니 까? –
아무 것도 할 필요가 없습니다. Page_Init은 Page_Load 이전부터 실행됩니다. 아이디어는 동적으로 생성 된 컨트롤을 제어 트리에로드하는 것입니다. 컨트롤 목록을 구현하기 전에 단일 컨트롤로 시작하십시오. 예제 [here] (http://stackoverflow.com/a/37882531/296861)를 읽을 수 있습니다. – Win