1

メニューのある更新パネルがあります。
ユーザーがユーザーコントロールのグリッドビューで印刷ボタンをクリックしたときに別のページにリダイレクトしたい (私の更新パネル)
これらのコードを使用しましたが、うまくいきませんでした:

1 : Response.Redirect("PrintTicket.aspx");
2 : Response.Write("<script>window.open('PrintTicket.aspx','_parent');</script>");
3 : Page.Response.Redirect("PrintTicket.aspx", true);
4 : Page.ClientScript.RegisterStartupScript(typeof(Page), "ClientScript", "<script     language='javascript' type='text/javascript'>window.location.replace('http://vinaticket.ir    /PrintTicket.aspx');</script> ", false);
5 : ScriptManager.RegisterStartupScript(this, this.GetType(),     "redirect","window.location='" + Request.ApplicationPath + "PrintTicket.aspx';", true);
6 : Page.ClientScript.RegisterStartupScript(typeof(Page), "ClientScript", "<script     language='javascript' type='text/javascript'> postRefId('" + Session["TicketID"].ToString() +     "');</script> ", false);
7 : ScriptManager.RegisterStartupScript(this, this.GetType(), "redir", "document.location = 'PrintTicket.aspx'", true);

これは私のコードです:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="true"     UpdateMode="Conditional">
<ContentTemplate>
----menu .... with exit button
    <asp:PlaceHolder ID="PlaceHolder1" runat="server" ViewStateMode="Enabled">

    </asp:PlaceHolder>

</ContentTemplate>
<Triggers>
    <asp:PostBackTrigger ControlID="exit" />
</Triggers>
</asp:UpdatePanel>
//code behind to loade user control
private string LastLoadedControl
{
    get
    {
        return ViewState["LastLoaded"] as string;
    }
    set
    {
        ViewState["LastLoaded"] = value;
    }
}

private void LoadUserControl()
{
    try
    {
        string controlPath = LastLoadedControl;

        if (!string.IsNullOrEmpty(controlPath))
        {
            PlaceHolder1.Controls.Clear();
            UserControl uc = (UserControl)LoadControl(controlPath);
            PlaceHolder1.Controls.Add(uc);
        }
    }  
    catch (Exception ex) { }
}

私のメニューボタン:

protected void your_ticket_Click(オブジェクト送信者, EventArgs e)
    {
        試す
        {
            Session["pg"] = "Z_ViewTicket.ascx";
            setPath();
        }
        catch (例外例) { }
    }
    and set path method():

protected void setPath() { try { string controlPath = string.Empty; controlPath = BASE_PATH + Session["pg"].ToString(); LastLoadedControl = controlPath; LoadUserControl(); } catch (Exception ex) { } }

注:サンプル コードをテストし、その理由を見つけました。サンプル コードでユーザー コントロールを更新パネルにドラッグすると、ボタンが機能しましたが、これらのコードでユーザー コントロールを呼び出すと、ボタンが機能しません (場合によっては、ユーザーコントロールはメインページに登録しますが、メインページに登録コードがない場合)

この問題について、どうすれば他のページにリダイレクトできますか?

4

1 に答える 1

0

「例外の欠如」についていくつかの大胆な仮定を立てますが、試してみましょう。

  1. Visual Studio でスクリプトの JIT デバッグが無効になっている
  2. Internet Explorer でのデバッグを無効にしました

質問の実際のトピックを参照すると、おそらくイベントでデータソースをバインドしていますGridViewPage_Loadこの回答を確認してください)。

ユーザー コントロール内 (またはデータを GridView にバインドする場所) で!Page.IsPostback、GridView をデータ ソースにバインドする前に確認する必要があります。

if (!IsPostBack)
{
    gridView.DataSource = new[] { new { Id = 1, Value = "test" } };
    gridView.DataBind();
}
于 2013-01-20T10:16:29.263 に答える