0

私のページには、いくつかのテキストボックス、AJAX タブパネル、およびグリッドビューがあります。

イベントではPage_Load、テキストボックスが埋められます。gridview が読み込まれます。

私のグリッドビューにはボタンがあります:

<Columns>
<ItemTemplate>
    <asp:Button ID="btnRedirect"
         Text="Click me"
         CommandArgument='<%#Eval("BkId_ZW")%>'
         OnClick="DoRedirect"
         runat="server" />
</ItemTemplate>
...
</Columns>

その背後にあるコードは次のようになります。

    protected void DoRedirect(object sender, EventArgs e)
    {
        Button theButton = sender as Button;
        string url ="http://../profile/" + theButton.CommandArgument;
        Response.Write("<script>window.open('" + url + "');</script>");           
    }

ボタンを押すと、新しいウィンドウが開きます (すべてが期待どおりに機能します) が、メイン ページの値とテキスト ボックスの書式設定が失われます。

何が起こっている?修正方法は?

4

1 に答える 1

1

Response.Write()この目的には適していません。ASP.net ページのライフサイクルの途中で応答に追加しているため、ページ出力を変更しています。ソースを表示すると<script>window.open...</script>、どこかぎこちない場所に行が見つかる場合があります。

したがって、Page.ClientScript.RegisterStartUpScript()代わりに使用してください。

于 2013-03-20T11:26:41.653 に答える