如何在代码隐藏文件中编写Javascript?

时间:2011-07-29 11:33:53

标签: c# javascript .net asp.net visual-studio

以下是我的代码的快照,其中包含从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。:我知道注册启动脚本和客户端脚本,但我不确定它们如何满足我的条件。

2 个答案:

答案 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 - 属性

imgrunat

答案 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存储在数据属性中。