我有一个 DataList,它加载在搜索结果(url、描述、标题)中。我需要知道用户点击搜索结果的 URL。我使用链接按钮来做到这一点。但是,如果我在 LinkButton 控件中使用 PostBackUrl 属性,则 OnClick 处理程序无法调用。
//Default.aspx
<asp:Panel ID="panResults" runat="server" Height="236px">
<p style="text-align: left" align="left"><asp:Label runat="server" ID="lblTotal" Font-Bold="true" /></p>
<asp:DataList ID="dlstResults" runat="server" CellPadding="4"
ForeColor="#333333" Width="100%" OnItemDataBound="DataList_ItemDataBound" >
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<SelectedItemStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<AlternatingItemStyle BackColor="White" ForeColor="#284775" />
<ItemStyle BackColor="#F7F6F3" ForeColor="#333333" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<ItemTemplate>
<asp:LinkButton ID="lnkResultUrl" runat="server" OnClick="Link_Click" CommandArgument='<%# Eval("Url") %>'
PostBackUrl='<%# Eval("Url") %>' Text='<%# Eval("Title") %>' />
<br />
<asp:Label ID="lblResultUrl" runat="server" Font-Bold="true"
Text='<%# Eval("Url") %>' />
<br />
<asp:Label ID="lblResultSummay" runat="server"
Text='<%# Eval("Description") %>' />
</ItemTemplate>
</asp:DataList>
</asp:Panel>
//Code-behind
protected void Link_Click(object sender, EventArgs e)
{
LinkButton btn = (LinkButton)(sender);
string myValue = btn.CommandArgument;
}