我正在尝试插入一个对象(Panel)在UpdatePanel类型对象中的一个接一个(通过按钮),这是为了形成一个数组,当用户在UpdatePanel中插入它时,它在视觉上看起来是水平的。我遇到的问题是,每次我插入一个新对象,它都会删除前一个,也就是说,我插入对象2,它删除1,如果我插入对象3,它会删除2,以此类推,只在里面插入一个对象。2我使用的两个文本框是用来控制位置和知道我已经有多少对象在里面。
我使用UpdatePanel,正是为了避免丢失我插入的那些对象,因为每个对象在数组中都有一个特定的操作。
如何避免丢失已插入的对象?有什么想法吗?
这是我正在使用的代码
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim PanelS As Panel
Dim pos As Int32 = Val(TextBox1.Text)
Dim numPanel As Int32 = Val(TextBox2.Text)
PanelS = New Panel
PanelS.ID = "pnl" & (numPanel + 1)
PanelS.Style.Add(HtmlTextWriterStyle.Height, "500px")
PanelS.Style.Add(HtmlTextWriterStyle.Width, "110px")
PanelS.Style.Add(HtmlTextWriterStyle.Left, pos.ToString & "px")
PanelS.Style.Add(HtmlTextWriterStyle.Position, "absolute")
PanelS.Style.Add(HtmlTextWriterStyle.BackgroundImage, "~/Images/W1.jpg")
UpdatePanel1.ContentTemplateContainer.Controls.Add(PanelS)
TextBox1.Text += 110
TextBox2.Text += 1
End Sub
在ASP中我用的是
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<div class="jumbotron">
<div class="row">
<asp:Button ID="Button1" runat="server" Text="INSERT MOD" Width="120px" />
</div>
<div class="row">
<div class="col-md-12">
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="TextBox2" runat="server">0</asp:TextBox>
<asp:TextBox ID="TextBox1" runat="server">20</asp:TextBox>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
</div>
</asp:Content>
等待您的评论...提前感谢您。
1条答案
按热度按时间xtfmy6hx1#
问题是在回发的时候你的
UpdatePanel
被重置了。这需要加强一点来处理添加第一个,等等。你可能需要使用Page_PreRender
而不是Page_Load
。我建议阅读页面的生命周期。最后一个是重复的,但是它应该会让你走上正确的轨道。另外,它是C#,因为我对VB不太熟悉。尽管原理是相同的。
**编辑:**使用
Page_PreRender
示例,其行为与所述方式更接近: