0

我有一个嵌套在数据网格中的链接按钮,该数据网格嵌套在数据列表中(是的,很奇怪,但不幸的是,它是我无法更改的站点的一部分)。本质上,我希望链接按钮触发调用 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 天难住了。

4

1 回答 1

0

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

于 2009-11-25T00:18:11.327 回答