我有一个嵌套在数据网格中的链接按钮,该数据网格嵌套在数据列表中(是的,很奇怪,但不幸的是,它是我无法更改的站点的一部分)。本质上,我希望链接按钮触发调用 Response.Redirect(e.CommandArgument)) 的事件处理程序。换句话说,我已经有了要重定向到的 URL,但是我不知道如何在单击链接按钮时触发事件。
我尝试使用数据网格的链接按钮 OnClick 事件和 ItemCommand 事件,但我认为我没有正确注册它们。
这是控件的 HTML。
<asp:DataList ID="dlstC" BorderWidth="0px" BorderStyle="None" CellPadding="2" CellSpacing="0"
runat="server">
<ItemTemplate>
<table cellpadding="0" cellspacing="0">
<tr style="padding-bottom: 4px">
<td style="height: 20px">
<asp:Label runat="server" ID="lblCertNum" Text='<%# "20" + (CStr(Container.DataItem("QuoteID").ToString) + "-" + CStr(Container.DataItem("QuoteRef").ToString)) %>'
Font-Bold="True" Font-Size="8pt"></asp:Label></td>
</tr>
<tr>
<td>
<asp:DataGrid ID="dgd_Certs" runat="server" ShowHeader="False" AutoGenerateColumns="False"
DataSource='<%# GetCert(CInt(Container.DataItem("QuoteRef"))) %>' BorderStyle="None"
BorderWidth="0" BorderColor="#ffffff" CellPadding="4" CellSpacing="0" OnItemCommand="DataGrid_EditItem">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:LinkButton ID="hlnCert" runat="server" Text='<%# Container.DataItem("CertName").ToString %>' CommandName="RedirectToCert"
CommandArgument='<%# BuildURLToCert(CInt(Container.DataItem("QuoteRef"))) %>' ToolTip="Click to view/edit certificate" ></asp:LinkButton>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<ItemTemplate>
<asp:Label ID="lblDate" runat="server" Text='<%# "Created - " + CStr(Container.DataItem("DateCreated").ToString)%>'></asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
</td>
</tr>
</table>
</ItemTemplate>
在我后面的代码中
Public Sub DataGrid_EditItem(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs)
If e.CommandName = "RedirectToCert" Then
Response.Redirect(e.CommandArgument.ToString)
End If
End Sub
这是我的最新尝试,我试图在客户端单击链接时触发 datagrids ItemCommand,但目前无法正常工作。
如果做不到这一点,当客户点击链接按钮时,是否有更简单的方法可以将客户重定向到正确的页面?我尝试使用 OnPostBackURL,但问题是当我执行此操作或仅使用带有 navigateurl 集的超链接时,有些对象似乎不需要传递。
在此先感谢您的帮助,这让我连续 2 天难住了。