以下是我的代码的快照,其中包含从gridview的项目模板中获取的javascript。它还有一个图像控件。
<ItemTemplate>
<a href="javascript:ShowChildGrid('div<%# Eval("ID#") %>');">
<img id="imgdiv<%# Eval("ID#") %>" alt="Click" border="0" src="plus.gif" />
</a> </ItemTemplate>
JS函数将参数作为ID。现在我如何在代码隐藏文件中编写JS?
这是必要的,因为我需要根据gridview的行数据绑定事件中的某些条件显示图像。
P.S。:我知道注册启动脚本和客户端脚本,但我不确定它们如何满足我的条件。
答案 0 :(得分:3)
如果要在RowDataBound-event中为gridview的每个单项设置JS代码,可以向ItemTemplate添加超链接控件,并将此控件的NavigationUrl属性设置为JS
<ItemTemplate>
<asp:Hyperlink runat="server" id="lnk" ImageUrl="..."/>
...
</ItemTemplate>
的RowDataBound-事件处理程序:
...
if (e.Row.RowType != DataControlRowType.DataRow)
return;
string js = String.Format("javascript:ShowChildGrid('div{0}');", rowId);
var lnk = e.Row.FindControl("lnk") as Hyperlink;
if(lnk!=null)
{
lnk.NavigationUrl = js;
lnk.ImageUrl = ...;
}
当然,您也可以使用a
- 属性
img
和runat
答案 1 :(得分:2)
更改模板并使用不引人注目的javascript。
<ItemTemplate>
<button class="imgdiv-button" data-img-id='<%# Eval("ID#") %>'>
<img class="imgdiv" alt="Click" border="0" src="plus.gif" />
</button>
</ItemTemplate>
$(".imgdiv-button").click(function() {
ShowChildGrid($(this).data('img-id'));
});
基本上你需要一个按钮而不是一个链接(因为它是一个按钮)。你应该将img-id存储在数据属性中。