【问题标题】:Call Javascript from Button inside ASP Repeater?从 ASP 中继器内的按钮调用 Javascript?
【发布时间】:2011-11-05 08:13:59
【问题描述】:

我正在使用 ASP 中继器。在<ItemTemplate><AlternatingItemTemplate> 中,除了其他标签等之外,还有 3 个 HTML 按钮 (<input type="button"...) 在单击时会进行不同的 javascript/jquery 调用。这工作正常。

现在,我想根据绑定到我的中继器的boolean 动态显示/隐藏这些按钮。我知道如果我使用的是 ASP 按钮,我可以简单地使用类似的东西:

Visible='<%# Eval(bMyBoolean) %>'

我尝试将我的 HTML 按钮切换为 ASP 按钮,但是我无法让 javascript 调用正常工作。我知道您可以在每个按钮后面的代码中连接 Javascript 调用(在 Repeater.ItemDataBound 事件中),但我不确定如何在我的场景后面的代码中执行此操作。这是我的一个 HTML 按钮的示例:

<input type="button" id="myButton" value="Test" onclick="MyJavascriptFunction(this,'<%# CType(Container.DataItem, myClassObject).FirstName%>');" />

在上面的示例中,我将 FirstName 值(它是我绑定到中继器的类对象的属性)传递给我的 Javascript 函数。

对我来说,如果我使用的是 ASP 中继器,那么使用 ASP 按钮会很有意义,但我不知道它是否真的有区别?

所以,我的问题是:如何根据绑定到中继器的布尔值动态显示/隐藏 ASP 中继器内的 HTML 按钮?或者,如果这是一种不好的做法,我如何使用 ASP 按钮进行 javascript 调用,就像上面的调用一样(引用来自中继器的值)?

提前感谢任何帮助/建议!

【问题讨论】:

    标签: javascript html button repeater


    【解决方案1】:

    您可以根据您的布尔值动态输出样式信息。考虑一下:

    <itemTemplate>
        <input type='button' style='<%# getVisbility(Eval("MyBoolValue")) %>' 
               value='click me' />
    </itemTemplate>
    

    然后在您的代码中,您将拥有:

    protected function getVisibility(isVisible as boolean) as string 
       if isVisible then
         return "display:inline; "
       else
         return "display:none;"
       end if 
    end function 
    

    现在,如果您想从 asp.net 控件执行 JavaScript 调用,您也可以选择:

    最简单的——但绝不是最好的选择,是做内联 JS:

    <itemTemplate>
       <asp:button runat="server" onclientClick="return confirm('click to submit');" 
                   text="Click!" />
    </itemTemplate>
    

    使用 JQuery 有更复杂的选项,可让您动态捕获点击事件,并确定您选择的转发器的确切行。一个例子是:

    <itemTemplate>
       <asp:button cssclass ='clickMe' runat="server" rel='<%# Eval("MyCol")%>' 
                   text="Click!" />
    </itemTemplate>
    

    然后是jquery代码:

    $(".clickMe").click(function(){
      var myVal = $(this).attr("rel");
    })
    

    【讨论】:

    • 太棒了!我喜欢第一个想法,因为我已经在使用 HTML 按钮 :) 但是有什么理由我应该切换到 ASP 按钮?
    • 切换到 ASP 按钮的唯一原因是您正在处理代码隐藏中的逻辑。由于情况似乎并非如此,所以我会继续使用 HTML 按钮,因为它实际上要快一些,而无需在中继器中实例化每个按钮的小开销。
    • 好吧,从技术上讲,我正在对后面的代码进行一些处理。其中两个按钮进行 JQuery Ajax 调用(首先弹出一个自定义 jquery,然后根据它们的选择,我进行一些处理,然后可能将它们带到不同的页面)。尽管如此,所有这些都运行良好,只是现在添加了第三个按钮,我将显示 2 并隐藏新按钮,反之亦然。然后它开始让我质疑我是如何做事的,我们到了!我想我现在只保留我的 HTML 按钮,非常感谢您的帮助!
    猜你喜欢
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-28
    相关资源
    最近更新 更多