주소 사용자 컨트롤과 비슷한 작업을하고 있습니다.
컨트롤을 동적으로 추가하기 때문에 각 포스트 백 이후에 컨트롤을 다시 만들어야합니다 (다른 컨트롤을 추가 할 때마다 이전에 추가 한 모든 컨트롤을 다시 만들어야합니다).
컨트롤 ID의 arraylist를 유지합니다 (뷰 스테이트에서 내용을 유지하려면 동일한 ID로 컨트롤을 만들어야 함). 이전에 추가하고 다시 작성해야하는 컨트롤의 수를 추적합니다 . 나는 통해 다음 루프와 페이지로드 이벤트에 다시 컨트롤을 만들 : (내 경우에는 내가 링크 버튼을 사용하고
foreach (string id in AddressItemIDs)
{
addAddressControl(null, id);
}
다음 내 "를 Button1_Click"이벤트 ...
protected void LinkButton1_Click(object sender, EventArgs e)
{
if (AddressCount == 0 || AddressCount < MaxAddresses && ((addressItem)addressContainer.Controls[addressContainer.Controls.Count-1]).HasAddress)
{
int i = 0;
string prefix = "addressItem_";
while (AddressItemIDs.Contains(prefix + i)) i++;
AddressCount++;
addAddressControl(null, prefix + i);
}
Button1.Visible = (AddressCount < MaxAddresses);
}
그것을
protected void addAddressControl(Address address, string id)
{
addressItem ai = (addressItem)LoadControl("~/controls/addressItem.ascx");
ai.RemoveClicked += new EventHandler(ai_RemoveClicked);
ai.ID = id;
if (address != null)
{
ai.AddressID = address.AddressID;
ai.Address = address.Street;
ai.City = address.City;
ai.State = address.State;
ai.Zip = address.Zip;
ai.TypeID = address.TypeID;
}
if(!AddressItemIDs.Contains(id))
AddressItemIDs.Add(id);
addressContainer.Controls.Add(ai);
}
당신이 코드없이 – BritishDeveloper
당신의 버튼 클릭 코드를하시기 바랍니다 추가 할 수 있습니다 내가 확실히 말할 수는 없지만 : 여기 내 addAddressControl 방법입니다 Control.ID = "blahblah"+ countFromViewState와 같이 클릭만으로 컨트롤을 추가 할 가능성이 매우 높습니다. 실제로 필요한 것은 카운터 틱 당 하나의 컨트롤을 추가하는 for 루프입니다. 그렇지 않으면 페이지가 다시 올 때마다 (버튼 클릭시) 추가 된 컨트롤이 지워집니다. – CodexArcanum