我做一個地址的用戶控制類似的東西。
既然你動態添加控件,您需要重新創建後各回(每次添加另一個,則需要重新創建你加入先前控制時間)後的控制。
我保留了控件ID的數組列表(如果您希望viewstate保留內容,您需要創建具有相同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);
}
這裏是我的addAddressControl方法:
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 2010-05-13 20:35:47
沒有代碼,我不能肯定地說,但它很可能你只是通過點擊添加控件,像Control.ID =「blahblah」+ countFromViewState。你實際需要的是一個for循環,它會爲每個計數器刻度添加一個控制。否則,該頁面會在每次回發時清除添加的控件(單擊按鈕時)。 – CodexArcanum 2010-05-13 20:40:39