从ASP Repeater中的Button调用Javascript?

时间:2011-08-28 03:35:54

标签: javascript html button repeater

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

现在,我想根据绑定到Repeater的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调用,如上面的调用(引用Repeater中的值)?

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

1 个答案:

答案 0 :(得分: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");
})