2

リピーターに隠しaspボタンがあります。VB.NET コード ビハインドでは、Rerpeater_ItemCommand を使用して、Repeater 内のクリック イベントを取得します。ユーザーがすでにプロジェクトを記録しているかどうかのチェックがあります。はい、彼が新しいものを開始したい場合は、「よろしいですか?」という確認ボックスが表示されます。確認からクリック値にアクセスするにはどうすればよいですか?

<asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand">
        <ItemTemplate>

        <div class="tile user_view user_<%# Eval("employeeName") %>">
        <div class="tilesheight"></div>
        <div class="element">

        <asp:Button ID="Button1" CssClass="hiddenbutton" runat="server" /> 


            Index: 
            <asp:Label ID="Label1" runat="server"
                Text='<%# Eval("index") %>' /><br />
            <hr class="hr" />

            customer:
            <asp:Label ID="CustomerLabel" runat="server" 
                Text='<%# Eval("customer") %>' /><br />
            <hr class ="hr" />
            order:
            <asp:Label ID="OrderNoLabel" runat="server" 
                Text='<%# Eval("orderNo") %>' /><br />
            <asp:Label ID="DescriptionLabel" runat="server" 
                Text='<%# Eval("description") %>' /><br />
            <hr class="hr" />

        </div>
        </div>
        </ItemTemplate>
        </asp:Repeater>

コードビハインド:

If empRecs.Contains(projects.Item(index.Text).employeeID) Then

            'Catch index of recording order
            i = empRecs.IndexOf(projects.Item(index.Text).employeeID)


                Page.ClientScript.RegisterStartupScript(Me.GetType, "confirm", "confirm('Order " & empRecs(i + 2) & " already recording. Would you like to start a new one?')",True)

                'If users clicks ok insertData()

        End If

他のソリューションでは、クリック イベントと隠しフィールドを使用しています。しかし問題は、ボタンがクリックされるたびに確認ボックスを表示したくないということです。empRecs が従業員を含む場合のみ。

助けてくれてありがとう

4

2 に答える 2

1

あなたは次を入れてみることができます

Proteted Sub Repeater1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles Repeater1.ItemDataBound
 If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
    ''not sure where you get the empRecs and projects from 
    ''but you can get the data item bound to this iteration of the repeater thus
    ''if you need it for the empRecs/projects bit
    Dim data = DirectCast(e.Item.DataItem, TypeOfBoundData)
    ''grab the button like this
    dim but as Button = e.Item.FindControl("Button1") ''cant remember if that will work, if not try the next line
    ''dim but = DirectCast(e.Item.Findcontrol("Button1"), Button)
    ''then do your bit
    If empRecs.Contains(projects.Item(index.Text).employeeID) Then
        AddHandler but.Click, AddressOf Button1_Click
        but.OnClientClick = "return confirm('Order " & empRecs(i + 2) & " already recording. Would you like to start a new one?')"
    End If
  End If
End Sub

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
   insertData()
End Sub

h番目

于 2012-11-07T10:23:18.947 に答える
0

あなたの質問が正しいかどうかわかりませんが、確認ダイアログで「はい」オプションが選択されたときに通知できるようにしたいということでした。コード ビハインドではなく、マークアップに次のコードを直接追加することで、これを行うことができます。

<asp:Button ID="Button1" CssClass="hiddenbutton" runat="server" OnClientClick="javascript:if(!confirm('Your confirm text here')) {return false;} />

そのボタンによってトリガーされたイベントは、ユーザーがダイアログを確認するまで起動しません。

于 2012-11-07T19:10:21.590 に答える