将ID从GridView行传递给Javascript函数

时间:2010-09-03 19:42:33

标签: javascript asp.net gridview

下面的第一个注释行正在使用硬编码的ApplicantId,我需要的是通过在同一个网格中传递当前的ApplicantId列来使其工作。

我已经尝试了很多天了,像第二个注释行这样的东西对我来说不起作用。 请帮忙。

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
DataKeyNames="ApplicantID" >
<Columns>

<asp:TemplateField HeaderText="Select">
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" />
</ItemTemplate>
</asp:TemplateField>

<!-- works -->
<asp:HyperLinkField NavigateUrl="javascript:popUp(3)" Text="Select" Target="_parent"/>

<!-- doesn't work -->
<asp:HyperLinkField NavigateUrl='"javascript:popUp("<%# + DataBinder.Eval(GridView1.DataItem,"ApplicantId") %> + ")"' Text="View" />

</Columns>
</asp:GridView>

2 个答案:

答案 0 :(得分:1)

令人沮丧的是,在尝试制作javascript Url时,我从来没有能够让HyperLinkField合理输出。但是,以下内容对您有用:

<asp:TemplateField>
    <ItemTemplate>
        <asp:HyperLink runat="server" 
          NavigateUrl='<%# "javascript:popUp(" + Eval("ApplicantId") + ")" %>'
          Text="View">
        </asp:HyperLink>
    </ItemTemplate>
</asp:TemplateField>

在您不生成javascript Url的任何时候,可能值得记住的一件事是DataNavigateUrlFieldsDataNavigateUrlFormatString属性,因为它们允许您以更清洁的方式整理Url :

<!-- Doesn't work due to "javascript:" target -->
<asp:HyperLinkField Text="View" DataNavigateUrlFields="ApplicantId"
     DataNavigateUrlFormatString="javascript:popUp({0})" />
<!-- Does work as targeting a "http://" target -->
<asp:HyperLinkField Text="View 2" DataNavigateUrlFields="ApplicantId" 
     DataNavigateUrlFormatString="http://localhost/popUp/{0}/" />

答案 1 :(得分:1)

刚刚发现这篇文章 试试这个,它会起作用

<asp:TemplateField>
<HeaderTemplate>Require Details ?</HeaderTemplate>
<ItemTemplate>
           <a href='javascript:ShowItemDetail(<%# Eval("Id")%>)'>Yes</a>
</ItemTemplate>
</asp:TemplateField>

:)