用C#的.NET 4.0和一把umbraco動態添加和持續文本框給用戶控制
我有在其上有一個按鈕,允許用戶動態地添加額外的文本框形式的用戶控制工作。我已經嘗試了很多方法,但無法在頁面加載之間持續輸入動態文本框中的任何數據。
這裏的UI:
<div id="new-item">
<h3>Add new menu item</h3>
<div><label for="ItemTitle">Title</label><asp:TextBox ID="ItemTitle" runat="server" CssClass="title"></asp:TextBox></div>
<div><label for="ItemDescription">Text</label><textarea id="ItemDescription" runat="server" rows="5" cols="20"></textarea></div>
<div><label for="ItemPrice">Price</label><asp:TextBox ID="ItemPrice" runat="server" CssClass="price"></asp:TextBox></div>
<div class="new-item-options">
<p><strong>Menu item options (optional) </strong><asp:Button ID="AddMenuItemOption" runat="server" Text="Add Option" OnClick="AddOption" /></p>
<asp:Panel ID="MenuItemOptionsPanel" runat="server"></asp:Panel>
<asp:HiddenField ID="ItemOptionCount" runat="server" />
</div>
<div><asp:Button ID="AddItemButton" runat="server" Text="Save" /></div>
<asp:HiddenField ID="ItemID" runat="server" />
<asp:HiddenField ID="ItemOrder" runat="server" />
而在AddOption按鈕單擊事件:
protected void AddOption(object sender, EventArgs e)
{
var dynamicControlCount = Convert.ToInt32(ItemOptionCount.Value) + 1;
for (var option = 0; option < dynamicControlCount; option++)
{
MenuItemOptionsPanel.Controls.Add(new Literal { ID = "OptionTextLiteral" + option, Text = "<label>Option Text</label>" });
MenuItemOptionsPanel.Controls.Add(new TextBox { ID = "OptionTextBox" + option });
MenuItemOptionsPanel.Controls.Add(new Literal { ID = "OptionPriceLiteral" + option, Text = "<label>Option Price</label>" });
MenuItemOptionsPanel.Controls.Add(new TextBox { ID = "OptionPriceBox" + option });
}
ItemOptionCount.Value = dynamicControlCount.ToString();
}
我知道我需要建立在Page_Load或這些動態控件是OnInit方法,但問題是當頁面首次加載時,我不想要任何動態控件創建,只有當用戶每次點擊按鈕時,我都喜歡附加的控件和那些已經存在以使其中的任何數據持續存在。
任何想法?我不認爲我有希望太遠:)
是的,控件的生成工作正常,但是如果我把它放在Page_Load中,任何在現有表單中輸入的值在回發後都會丟失? – timothyclifford 2011-06-15 02:39:25