嵌套链接按钮的VB.Net事件处理程序注册

时间:2009-11-24 01:54:45

标签: vb.net datagrid nested linkbutton event-handling

我有一个嵌套在数据网格中的链接按钮嵌套在数据列表中(是的,非常奇怪,但遗憾的是它是我无法更改的网站的一部分)。基本上我希望linkbutton触发一个调用Response.Redirect(e.CommandArgument)的事件处理程序。换句话说,我已经有了我想要重定向到的URL,但是当我点击链接按钮时,我无法弄清楚如何触发事件。

我尝试过使用linkbutton 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,但问题是有些对象需要继续使用,当我这样做或者只是使用带有导航设置的超链接时似乎没有。

在此先感谢您的帮助,这让我连续两天难过。

1 个答案:

答案 0 :(得分:0)

我从来没有设法让事件处理程序触发链接按钮,但我确实想出了解决原始问题的方法,将变量从一个页面传递到另一个页面。我使用了超链接而不是链接按钮,并使用查询字符串为我需要在新页面上访问的对象传递参考号。

相关问题