2011-04-02 23 views
0

我一直在試圖弄清楚如何讓用戶單擊母版頁中gridview中的一行。最終,我希望將用戶重定向到另一個頁面,使用gridview(hiddenfield列)中的值作爲重定向到的頁面的查詢字符串值。jQuery單擊主頁面中的gridview行

這一點我只能得到gridview本身。我無法從gridview中獲取行或單元格。

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('[id$=LeagueGV]').click(function() { alert('gridview clicked'); }); 
     //window.location = "/League_Admin.aspx?LID=" + $(this).find('LeagueHidden').value(); 
     //}); 
    }); 
</script> 

<asp:GridView runat="server" ID="LeagueGV" DataKeyNames="LeagueID" > 
      <Columns> 
       <asp:TemplateField> 
        <ItemTemplate> 
         <asp:HiddenField runat="server" ID="LeagueHidden" Value='<%# Eval("LeagueID") %>' /> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField> 
        <ItemTemplate> 
         <asp:Label runat="server" ID="LeagueIDLabel" Text='<%#Eval("LeagueID") %>'></asp:Label> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:BoundField DataField="LeagueName" HeaderText="League Name" /> 
      </Columns> 
     </asp:GridView> 

回答

2

有一些問題,你有什麼。首先,您的GridView的ID不會被渲染爲「LeagueGV」,隱藏的區域也不會是「LeagueHidden」。它將被破壞成其母公司NamingContainer的ID鏈的一部分。

其次,使用ID的jQuery語法可以像$('#yourId')一樣簡單。你使用的語法是舊的。

第三,我不會建議將點擊事件添加到tabletr。這不是許多用戶的預期行爲,可能會造成混淆。

除非你希望不顯眼的Javascript,我的第一個建議是有一個HyperLinkField而不是TemplateField的,那麼你可以重寫OnDataBound事件爲GridView,當它呈現,其中包括增加一個onclick屬性鏈接聯盟ID。

+0

謝謝Cory。 Gridview沒有渲染爲「LeagueGV」,但上面的jQuery *確實*找到了gv。 但更重要的是,你會說'這是一個意外事件',這很有趣。我從來沒有真正想到過,Web ui當然不是我的強項。 我有一個可點擊的gridivew在另一個項目中,我與rowdatabound一起使它成爲'可點擊的',我試圖擴展它。很顯然,超鏈接使事情變得更容易。 – IMAbev 2011-04-02 21:49:36

+0

update - $('#GameGV')在母版頁的內容中找不到gridview。上述語法是我可以在母版頁中找到gv的唯一方法。 – IMAbev 2011-04-02 21:55:41

+0

你是對的 - 你的語法意味着:找到所有元素的ID *結尾*與「LeagueGV」,這將比我所建議的更好。另外,讓一行可點擊並不一定是壞事,你只需要讓它支持你定位的瀏覽器。您可能希望向用戶提示它是可點擊的,例如將光標更改爲手形,並突出顯示懸停時的行。 – 2011-04-03 15:45:39

相關問題