簡體   English   中英

如何從轉發器內部觸發按鈕事件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM