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

发布于 2024-11-26 17:36:54 字数 484 浏览 0 评论 0原文

下面是我的代码的快照,其中包括从 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 的行数据绑定事件中的某些条件显示图像。

PS:我知道注册启动脚本和客户端脚本,但我不确定它们如何满足我的条件。

Below is the snapshot of my code that includes javascript taken from gridview's item template. It also has an image control placed.

  <ItemTemplate>
    <a href="javascript:ShowChildGrid('div<%# Eval("ID#") %>');">
                        <img id="imgdiv<%# Eval("ID#") %>" alt="Click" border="0" src="plus.gif" />
    </a> </ItemTemplate>

The JS function takes an argument as ID. Now how can i write the JS in the code behind file?

It is needed because i need to display the image based on some condition in row databound event of gridview.

P.S.: I am aware of Register Startup Script and Client Script but i am not sure how would they fit in to satisfy my conditions.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

走过海棠暮 2024-12-03 17:36:54

如果你想在 RowDataBound-event 中为 gridview 的每个项目设置 JS 代码,你可以在 ItemTemplate 中添加一个 Hyperlink-control 并将该控件的 NavigationUrl-property 设置为 JS

<ItemTemplate>
    <asp:Hyperlink runat="server" id="lnk" ImageUrl="..."/>
    ...
</ItemTemplate>

RowDataBound-eventhandler:

...
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 = ...;
}

当然,你还可以通过 runat-Attribute 使用 aimg

If you want to set the JS code for each single item of the gridview in RowDataBound-event, you could add a Hyperlink-control to your ItemTemplate and set the NavigationUrl-property of this control to the JS

<ItemTemplate>
    <asp:Hyperlink runat="server" id="lnk" ImageUrl="..."/>
    ...
</ItemTemplate>

RowDataBound-eventhandler:

...
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 = ...;
}

Of course, you can also use a and img using the runat-Attribute

鸢与 2024-12-03 17:36:54

更改您的模板并使用不显眼的 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 存储在 data- 属性中。

Change your template and use unobtrusive 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'));
});

Basically you want a button instead of a link (because it is a button). And you should just store that img-id in a data- attribute.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文