我有Listview
,其中一列名为id_Number
。
如果用户点击其中一行,是否可以重定向到另一个页面?
例如,如果id_Number
为4,则应将页面重定向到~/Page.aspx?id=4
。
代码:
<asp:ListView ID="ListView1" runat="server"
DataKeyNames="id_Number" >
<EmptyDataTemplate>
<table id="Table1" runat="server" style="">
<tr>
<td>
No data was returned.</td>
</tr>
</table>
</EmptyDataTemplate>
<ItemTemplate>
<tr style="font-family: Arial; color: #FFFFFF" onMouseOver="this.bgColor='#219DD0';" onMouseOut="this.bgColor='#252526';">
<td>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("id_Number") %>' />
</td>
<td>
<asp:Label ID="TextLabel" runat="server" Text='<%# Eval("Text") %>' />
</td>
<td>
<asp:Label ID="DateLabel" runat="server" Text='<%# Eval("Date") %>' />
</td>
</tr>
</ItemTemplate>
<LayoutTemplate>
<table id="Table2" runat="server">
<tr id="Tr1" runat="server">
<td id="Td1" runat="server">
<table ID="itemPlaceholderContainer" runat="server" border="0" style="">
<tr id="Tr2" runat="server" style="">
<th id="Th1" runat="server">
Name</th>
<th id="Th2" runat="server">
Text</th>
<th id="Th3" runat="server">
Date</th>
</tr>
<tr ID="itemPlaceholder" runat="server">
</tr>
</table>
</td>
</tr>
</table>
</LayoutTemplate>
</asp:ListView>
答案 0 :(得分:1)
您可以非常轻松地在ItemTemplate
的{{1}}中添加HTML链接或JavaScript:
“列”只是HTML列;在ItemTemplate中,您可以访问所有数据,包括id_number,因此您可以在HTML中的任何位置使用它,而不仅仅是在列中。
由于您要整行可点击,我会在HTML表格行ListView
元素的onClick
事件上使用JavaScript函数。你已经有2个事件(onMouseOver,onMouseOut),其中包含JavaScript,所以这只是一个......
JavaScript重定向使用<TR>
,它将在同一窗口中重定向,假设这是您想要的(而不是新窗口等):
window.location.href
需要注意的一点是,对于Page.aspx的路径,您必须使用相对路径。
<ItemTemplate>
<tr style="font-family: Arial; color: #FFFFFF"
onMouseOver="this.bgColor='#219DD0';"
onMouseOut="this.bgColor='#252526';"
onClick="window.location.href = 'some/path/Page.aspx?id=<%# Eval("id_Number") %>';"
<td>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("id_Number") %>' />
</td>
<td>
<asp:Label ID="TextLabel" runat="server" Text='<%# Eval("Text") %>' />
</td>
<td>
<asp:Label ID="DateLabel" runat="server" Text='<%# Eval("Date") %>' />
</td>
</tr>
</ItemTemplate>
是一个.net路径,它被编译成该页面的完整相对路径。 但是,由于你的ItemTemplate包含HTML,你需要在那里找到Page.aspx的完整(相对)路径。
所以它应该是(只是一个例子):
~/page.aspx?id=
或者你可以使用
/some/path/page.aspx?id= <-- page.aspx lives on http://www.yoursite.com/some/path/page.aspx
/page.aspx?id= <-- page.aspx lives on root, http://www.yoursite.com/page.aspx