[英]How to fire a button event from inside a repeater?
我已經完成了我的研究但是找不到在VB中執行以下操作的有效方法:
我知道我可以使用ItemCommand選項,但無法使其按預期工作。
ASP.NET
內置中繼器項目
<asp:Button ID="btnSave" RunAt="Server"/>
VB.NET
Protected Sub btnSave_Click(ByVal sender As Object, ByVal e As System.EventArgs)
sqlConn.Open()
For Each Item As RepeaterItem In rpt.Items
...
Next
sqlConn.Close()
End Sub
編輯:
經過SO的一些研究后,我發現其他事件而不是ItemCommand
並沒有被Asp:Repeater
捕獲,正如FlySwat在回答中說的那樣。 所以你需要編寫你的VB.NET
代碼:
首先,在頁面上聲明ItemCommand
事件,如下所示:
Protected Sub rpt_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles rpt.ItemCommand
If e.CommandName = "Save" Then
'Save
End If
End Sub
然后,在Asp:Button
里面標記Asp:Repeater
,你必須設置它CommandName
屬性是這樣的:
<Asp:Button ID="btnSave" runat="server" CommandName="Save" UseSubmitBehavior="false"/>
看一下這里了解有關UseSubmitBehavior
更多信息。
試試吧。
當按鈕位於Repeater模板內時,您需要添加OnClick事件,您可以在Repeater控件的ItemDataBound event
上添加事件。
你的.aspx代碼看起來像這樣:
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<asp:Button ID="btnSave" runat="server" Text="SomeText" />
</ItemTemplate>
</asp:Repeater>
代碼隱藏
void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == Repeater1.AlternatingItem || e.Item.ItemType == Repeater1.Item)
{
var btn = e.Item.FindControl("btnSave") as Button;
if (btn != null)
{ // adding button event
btn.Click += new EventHandler(btn_Click);
}
}
}
void btn_Click(object sender, EventArgs e)
{
//write your code
}
在vb.net中
Private Sub Repeater1_ItemDataBound(sender As Object, e As RepeaterItemEventArgs)
If e.Item.ItemType = Repeater1.AlternatingItem OrElse e.Item.ItemType = Repeater1.Item Then
Dim btn = TryCast(e.Item.FindControl("btnSave"), Button)
If btn IsNot Nothing Then
' adding button event
btn.Click += New EventHandler(btn_Click)
End If
End If
End Sub
Private Sub btn_Click(sender As Object, e As EventArgs)
'write your code
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.