繁体   English   中英

从ASP Repeater中的Button调用Javascript?

[英]Call Javascript from Button inside ASP Repeater?

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

现在,我想基于绑定到我的Repeater的boolean动态显示/隐藏这些按钮。 我知道如果我使用的是ASP按钮,那么我可以简单地使用以下内容:

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

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

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

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

在我看来,如果我使用的是ASP中继器,那么使用ASP按钮是有意义的,但是我不知道它是否真的有所作为?

因此,我的问题是 :如何基于绑定到中继器的布尔值动态显示/隐藏ASP中继器中的HTML按钮? 或者,如果这是一个不好的做法,我该如何使用ASP按钮进行javascript调用,就像上面的调用(引用Repeater中的值)一样?

预先感谢您的任何帮助/建议!

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

<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可以使用更复杂的选项,它可以让您动态捕获click事件,并确定要为其选择的中继器的确切行。 这样的一个例子是:

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

然后是jQuery代码:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM