2010-05-30 36 views
4

我有一個現有的GridView,其中包含字段「partner name」。它可以通過合作伙伴名稱進行排序。
現在我需要更改合作伙伴名稱字段,並在某些情況下使其可點擊並提醒()某事。ASP.Net:將客戶端onClick添加到GridView中的HyperlinkField中

現有的代碼是:

<asp:GridView ID="gridViewAdjustments" runat="server" AutoGenerateColumns="false" AllowSorting="True" OnSorting="gridView_Sorting" OnRowDataBound="OnRowDataBoundAdjustments" EnableViewState="true"> 
     <asp:BoundField DataField="PartnerName" HeaderText="Name" SortExpression="PartnerName"/> 

我加列:

<asp:hyperlinkfield datatextfield="PartnerName" SortExpression="PartnerName" headertext="Name" ItemStyle-CssClass="text2"/> 

這使我能夠控制的CSS和排序。但是,我無法找到如何添加客戶端JavaScript功能。
我發現,添加:

<asp:TemplateField HeaderText="Edit">          
<ItemTemplate> 
     <a id="lnk" runat="server">Edit</a>  

使我的ID來訪問 「LNK」,並添加到它的屬性。但是,我失去了分揀能力。

這種情況下正確的解決方案是什麼?
謝謝。

回答

7

我發現用ASP解決方案:的TemplateField這種方式,又不失排序能力,並使用使用eval的datatextfield:

<asp:TemplateField HeaderText="Name" SortExpression="PartnerName"> 
<ItemTemplate> 
     <a onclick="javascript:alert('ok')" href="http://<%#Eval("PartnerName")%>"><%#Eval("PartnerName")%></a> 
</ItemTemplate></asp:TemplateField> 
5

處理RowDataBound事件。在事件處理程序...

private void CustomersGridView_RowDataBound(Object sender, GridViewRowEventArgs e) 
{ 
    e.Row.Cells[0].Controls[0].Attributes.Add("onclick", "alert(‘An alert’);") 
} 

您可能需要更改Controls[0]Controls[1]

+0

定義ID時的錯誤是:「ID屬性無效對於不是從Control繼承的標籤「。 – Nir 2010-05-30 11:09:06

+0

對不起,查看更新。 – 2010-05-30 16:13:37

+0

謝謝 - 但你仍然不能給asp:hyperlinkfield一個ID ...我明白你的意思了。 – Nir 2010-05-31 09:42:07

0

jQuery的。簡單的俏皮話和unobtrusive

$('A.text2').click(function() { 
    alert('ok'); 
}); 
3

ClientID的產生看起來與ID很大的不同,但它總是以ID結束。我們不能在Javascript或Jquery的使用ID,所以我們可以如下操作:

<asp:TemplateField SortExpression="partnername" HeaderText="Partner"> 
    <ItemTemplate> 
     <asp:HyperLink ID="kkx" Text='<%#Eval("partnername")%>' NavigateUrl="# runat="server"> 
     </asp:HyperLink> 
    </ItemTemplate> 
    </asp:TemplateField> 

然後jQuery中,我們可以這樣做:

$(function() { 
     $("#GridView1 a[id$=kkx]").bind('click', function() { 
      alert('hi'); 
      }); 
     }); 
相關問題