-1
// SourcePage.aspx 
public partial class SourcePage: System.Web.UI.Page 
{ 
    protected void btnSearch_Click(object sender, EventArgs e) 
    { 
        //...... 
        //...... 

            while (rdr.Read()) 
            { 
                txtName.Text = rdr["Name"].ToString(); 
            } 
            rdr.Close(); 
    } 

    public string GetName 
    { 
        get { return txtName.Text; } 
    } 

    protected void btnServer.Transfer_Click1(object sender, EventArgs e) 
    { 
       Server.Transfer("TargetPage1.aspx"); 
       Server.Transfer("TargetPage2.aspx"); 
    } 
} 

//TargetPage1.aspx   
protected void Page_Load(object sender, EventArgs e) 
{ 
            SourcePage SP; 
            SP = (SourcePage)Context.Handler; // I get runtime error here: unable to cast object of type 'ASP.TargetPage_aspx' to type 'SourcePage' 
            txtTPName.Text = p.GetName; 
} 

どこが間違っていますか?本当にそれを理解することはできません。ソースページから他のターゲットページに値を転送する必要があり、複数のクエリを使用したくありません。どんな種類の助けも大歓迎です!

4

2 に答える 2

0

試してみてくださいPage.PreviousPage

このプロパティを使用すると、すべての元のページ コントロールにアクセスできます。

TextBox txtName = (TextBox)Page.PreviousPage.FindControl("txtName");
txtTPName.Text = txtName.Text;
于 2012-06-20T15:35:47.877 に答える
0

こんにちは、代わりにセッション変数を使用して問題を解決しました。方法は次のとおりです..

ソースページ : codebehind: 接続後、フォロー..

SqlDataAdapter sda = new SqlDataAdapter();          
sda.SelectCommand = cmd;         
sda.Fill(dt);          
foreach (DataRow Row in dt.Rows)         
{             
txtSource.Text = Row["Name"].ToString();      
    }  
        Session.Add("sp", dt);  

次に、[ターゲット] ページで:

    DataTable dt = Session["sp"] as DataTable;    
 foreach (DataRow Row in dt.Rows)    
 {      
   txtTarget.Text = Row["Name"].ToString();  
   } 

これで、他のページでこのデータテーブルを初期化し、そこから必要なデータを取得できます。

于 2012-06-21T14:52:51.827 に答える