【问题标题】:Get Confirm value in vb.net在 vb.net 中获取确认值
【发布时间】:2012-10-27 09:12:38
【问题描述】:

我在中继器中有一个隐藏的 asp 按钮。在后面的 VB.NET 代码中,我使用 Rerpeater_ItemCommand 来获取中继器中的单击事件。检查用户是否已经在录制项目。如果是并且他想开始一个新的,应该会出现一个确认框,询问“你确定吗?”如何从确认中获取点击值?

<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 包含员工时。

感谢您的帮助

【问题讨论】:

    标签: javascript asp.net vb.net


    【解决方案1】:

    不确定我的问题是否正确,但我知道您希望能够知道何时选择了确认对话框中的“是”选项。您可以通过直接在标记而不是代码隐藏中添加以下内容来做到这一点:

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

    无论该按钮触发什么事件,在用户确认对话框之前都不会触发。

    【讨论】:

      【解决方案2】:

      你可以试试下面的

      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
      

      【讨论】:

      • 更改标记的原因是,确认消息总是在点击时显示,这正是我不想要的。我无法直接访问按钮,所以我尝试了 CType(e.CommandSource, Button).OnClientClick,但这也不起作用。
      猜你喜欢
      • 2013-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-11
      • 1970-01-01
      • 1970-01-01
      • 2022-10-22
      相关资源
      最近更新 更多