0

データリストにネストされたデータグリッドにネストされたリンクボタンがあります(はい、非常に奇妙ですが、残念ながら、変更できないサイトの一部です)。基本的に、Linkbuttonで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 に答える