我正在使用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中的值)?
提前感谢您的任何帮助/建议!
答案 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");
})