我一直试图弄清楚如何允许用户在母版页中单击gridview中的行。最终,我希望将用户重定向到另一个页面,其中gridview(hiddenfield列)中的值将成为重定向到的页面的查询字符串值。
这一点我只能进入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>
答案 0 :(得分:2)
你有什么问题。首先,您的GridView
的ID不会呈现为“LeagueGV”,隐藏的字段也不会是“LeagueHidden”。它将被破坏成为其父NamingContainer
的ID链的一部分。
其次,使用ID的jQuery语法可以像$('#yourId')
一样简单。你正在使用的语法是旧的。
第三,我不建议将点击事件添加到table
或tr
。这不是许多用户的预期行为,可能会令人困惑。
除非您希望使用不引人注目的Javascript,否则我的第一个建议是HyperLinkField
而不是TemplateField
,那么您可以覆盖{{1}的OnDataBound
事件在呈现包含LeagueID的链接时,向链接添加GridView
属性。