2012-06-20 2 views
-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; 
} 

Где я ошибаюсь? Не могу понять это. Мне нужно перенести значения из исходной страницы на другие целевые страницы, и я не хочу использовать несколько запросов. Любая помощь будет высоко оценена!Перенос значения текстового поля с исходной страницы на несколько целевых страниц: ошибка литья объекта

ответ

0

Попробуйте с Page.PreviousPage

Используя это свойство, которое вы хотите быть в состоянии получить доступ ко всем оригинальным элементам управления страницей.

TextBox txtName = (TextBox)Page.PreviousPage.FindControl("txtName"); 
txtTPName.Text = txtName.Text; 
+0

Не могли бы вы привести пример для страницы.PreviousPage? Я имею в виду точный (что есть?); потому что я пробовал с этим и тоже имел проблемы –

+0

@M Rokon Jaman: Проверьте ссылку msdn: http://msdn.microsoft.com/en-us/library/system.web.ui.page.previouspage.aspx –

+0

Как об этом? –

0

Эй, ребята, я решил эту проблему с помощью переменного сеанса вместо этого, вот как ..

Источника страницы: отделенный код: после подключения следовать ..

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); 

Затем на странице Target :

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

Теперь я могу инициализировать этот DataTable в любом другом воле и могут иметь требуемые данные оттуда.

Смежные вопросы