У меня есть ссылка, вложенная в datagrid, которая вложена в datalist (да, очень странно, но, к сожалению, это часть сайта, которую я не могу изменить). По сути, я хочу, чтобы linkbutton запускал обработчик событий, который вызывает Response.Redirect (e.CommandArgument)). Другими словами, у меня уже есть URL-адрес, который я хочу перенаправить, но я не могу понять, как заставить событие запускаться, когда я нажимаю на ссылку.Регистрация обработчика события VB.Net для вложенного linkbutton
Я попытался использовать события OnClick linkbutton и события ItemCommand для datagrid, но я не думаю, что правильно их зарегистрирую.
Вот 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 дней подряд.