Public Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Page.IsPostBack = False Then
Dim ds1 As New List(Of Link)
For i = 1 To x
Dim h As New Link
ds1.Add(h)
h.Text = "ssss"
h.URL = "yyyyy"
Next
rptMenu.DataSource = (ds1)
Else
rptMenu.DataSource = ViewState("ds1")
End If
rptMenu.DataBind()
End Sub
Protected Sub addFeild()
Dim ds1 As List(Of Link) = rptMenu.DataSource
Dim h As New Link
ds1.Add(H)
rptMenu.DataBind()
End Sub
Private Sub Menu_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
ViewState("ds1") = rptMenu.DataSource
End Sub
End Class
<asp:Repeater ID="rptMenu" runat="server">
<ItemTemplate>
<tr>
<td><asp:TextBox CssClass="txtBox" ID="txtText" runat="server" Text='<%# Eval("Text") %>'></asp:TextBox></td>
<td><asp:TextBox CssClass="txtBox" ID="txtLocation" runat="server" Text='<%# Eval("URL") %>'></asp:TextBox></td>
<td><asp:Button ID="btnDelete" runat="server" Text="Delete" /></td>
</tr>
</ItemTemplate>
<FooterTemplate>
<tr><td colspan="3">
<asp:Button ID="btnAdd" runat="server" Text="Add" OnClick="addFeild" />
</td></tr></table>
</FooterTemplate>
</asp:Repeater>
此代码会在点击Add
但是,它会删除所有更改。
如何在不删除更改的情况下向转发器添加行?
答案 0 :(得分:0)
为了解决这个问题,我使用Reflector来确认Repeater
在处理自身添加行时所做的工作,创建一个继承自ExtensibleRepeater
的{{1}}并允许一行为为每次更新添加。它唯一的问题是你不能使用页脚概念,因为在页脚更新后会在页脚后面显示添加的行。
通过将相关Repeater
的{{1}}设置为RepeaterItem
来处理删除行。
Visible
,这会重置所有现有数据,包括用户表单数据。
代码是专有的,但由于它基于Reflector的.NET 2.0 False
显示,我可以向您显示已编辑的版本:
DataBind