2016-05-12 3 views
0

Ich habe ein asp.net-Projekt mit zwei Webformularen. Ich möchte alle Elemente von listbox3 (die Homepage ist) an Textbox übergeben, die in der Statistik Seite ist. Ich versuche, Code zu folgen, aber hat nicht funktioniert.Wie alle Elemente der Listbox an Textbox übergeben werden, die auf einer anderen Seite ist? ASP.NET

Homepage:

protected void Button5_Click(object sender, EventArgs e) 
     { 
      Response.Redirect("Statistics.aspx?ListBox3"); 
     } 

Statistiken Seite

public partial class WebForm1 : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      TextBox3.Text = ListBox3.Items; 

     } 
    } 
+0

Ich denke, Sie möchten die Elemente aufzählen, so etwas wie 'foreach (var Element in ListBox3.Items) TextBox3.Text = TextBox3 ==" "? TextBox3.Text + item.ToString(): TextBox3.Text + "," + item.ToString(); ' –

Antwort

0

Sie können keine Kontrollen beziehen, die mit seiner ID nicht in der aktuellen Seite sind. So kann es erforderlich, die Elemente aus ListBox in Session zu halten oder es durch QueryString

Homepage

protected void Button5_Click(object sender, EventArgs e) 
{ 
    string Items = string.Empty; 
    foreach(var item in ListBox3.Items) 
    { 
     Items += item + ","; 
    } 
    //Session["ListBox3"] = Items; 
    Response.Redirect("Statistics.aspx?ListBox3=" + Items); 
} 

Statistik Seite

protected void Page_Load(object sender, EventArgs e) 
{ 
    TextBox3.Text = Request.QueryString["ListBox3"].ToString(); 
    //TextBox3.Text = Session["ListBox3"].ToString(); 
} 
+0

Danke für die Antwort, ich habe diesen Fehler" Redirect URI kann keine Newline-Zeichen enthalten. " für diese Zeile "Response.Redirect (" Statistics.aspx? ListBox3 = "+ Items);" – dpointttt

+0

Ich weiß nicht wirklich, was alles der Inhalt Ihrer List Box Elemente sind –

+0

Besser geht es mit 'Session', da es keine gute Praxis ist, langen Text in' QueryString' zu übergeben und es gibt eine Grenze für 'QueryString' Inhalt –

0
protected void Button5_Click(object sender, EventArgs e) 
{ 
    string allItems; 
    for(int i = 0; i < ListBox3.Items.Count; i++) 
     allItems += ListBox3.Items[i].ToString() + "--"; 
    Response.Redirect("Statistics.aspx?ListBox3=" + allItems.SubString(0, allItems.Length - 2)); 
} 

Zugang passieren es mit

public partial class WebForm1 : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     TextBox3.Text = Request.QueryString["ListBox3"]; 
    } 
} 
+0

und in Statistikseite sollte ich wie diese geschützte Variable verwenden Page_Load (Objekt Absender, EventArgs e) { TextBox3.Text = allItems.Text; } – dpointttt

+0

@dpointttt aktualisierte Antwort – Imad

+0

Arbeitte zuerst, dann habe ich die Zeile mit Substring wie folgt geändert int m = allItems.Length - 2; Zeichenfolge mmm = allItems.Substring (0, m); Response.Redirect ("Statistics.aspx? ListBox3 =" + mmm); und es funktioniert jetzt, wie auch immer, ich bekomme nur das erste Element der Listbox nicht alle – dpointttt