2011-04-02 51 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

相关问题