我正在创建<div>
并将它们附加到文字的文本属性中。我在文本中添加了<a>
元素,以便用户可以单击特定元素。如何将其绑定到函数来处理代码隐藏(vb.net)中的事件?
我的Literal.Text示例......
For Each row As DataRow In oDataTable.Rows
MyLiteral.Text &= "<div style='font-size: 8.25px; text-transform:uppercase; padding:3px; background: #FF8C00; border: 1px solid #000; margin: 0 5px 0 5px; display:inline-block; float: left;'>" _
& row.Item("LastName") & " | <a href='#?"& row.Item("ID") & "' style='color: #000;' >X</a></div>"
Next
所以上面的代码我想以某种方式允许用户点击X链接,然后它会删除那个人。
编辑:如果有更好的方法,那也很好听!感谢。
答案 0 :(得分:2)
为什么不切换到使用asp:Repeater控件。从那里你可以添加一个asp:LinkButton到转发器模板并捕获回发。 Repeater控件的设计与您在循环中执行的操作相同,即创建一个用于数据收集的模板。这将允许使用带有runat =“server”的控件来处理回发事件。
以下是一些讨论使用中继器的页面:
http://www.aspnettutorials.com/tutorials/controls/repeater-vb.aspx
http://www.dotnetcurry.com/ShowArticle.aspx?ID=663
您可能希望使用OnItemDataBound事件来处理runat =“server”的控件:
fetching values from the repeater control in ItemDataBound event
http://www.codeguru.com/csharp/.net/net_asp/tutorials/article.php/c12065
关于如何处理按钮点击回发事件的文章:
button event in nested repeater
ASP.Net: why is my button's click/command events not binding/firing in a repeater?
我的VB.NET很生疏,但我很乐意帮助您解决任何问题。
编辑 - 添加代码示例
我的转发器:
<asp:Repeater runat="server" ID="repTemplate">
<ItemTemplate>
<div>
<%# DataBinder.Eval(Container.DataItem, "Key")%> - <%# DataBinder.Eval(Container.DataItem, "Value") %>
<asp:LinkButton OnClick="RepeaterLinkButton1_Click" runat="server" ID="linkDelete" Text="X" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "Key") %>' />
</div>
</ItemTemplate>
</asp:Repeater>
页面背后的代码
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack = False Then
Dim data As Dictionary(Of Integer, String) = New Dictionary(Of Integer, String)()
data.Add(1, "Test #1")
data.Add(2, "Test #2")
data.Add(3, "Test #3")
data.Add(4, "Test #4")
data.Add(5, "Test #5")
Me.repTemplate.DataSource = data
Me.repTemplate.DataBind()
End If
End Sub
Protected Sub RepeaterLinkButton1_Click(sender As Object, e As EventArgs)
Dim linkButton As LinkButton = sender
Dim id As String = linkButton.CommandArgument
'TODO: Delete from the database based on ID
'TODO: Reload the data to the repeater
End Sub
通过在代码的HTML视图中设置OnClick函数并将CommandArgument设置为ID,您可以捕获行的ID并执行您想要的操作。请记住,我的示例使用Dictonary作为示例,因此“Key”是项目的唯一键,“Value”是存储在其中的内容,这就是为什么HTML使用“Key”/ “价值”的名字。
答案 1 :(得分:0)
您可以使用超链接控件
HyperLink hl1 = new HyperLink();
hl1.Text="Click Here";
hl1.NavigateUrl="http://www.google.com";