BETA
Aby się zalogować, najpiew wybierz portal.
Aby się zarejestrować, najpiew wybierz portal.
Podaj słowa kluczowe
Słowa kluczowe muszą mieć co najmniej 3 sąsiadujące znaki alfanumeryczne
Pole zawiera niedozwolone znaki
WayneDark
WayneDark
121 pkt.
Junior

 
0


Witam,mój problem może wydawać się trywialny jednak jakoś nie mogę sobie z nim poradzić...do rzeczy: mam pewien formularz, który wypełnia użytkownik, poszczególne wartości tekstowe mają być przesyłane na druga stronę, na której użytkownik ostatecznie zatwierdza wprowadzone przez siebie dane. Chcę te dane przesyłać jako zmienne sesyjne, np.Session ("Imie") = txtImie.Textna następnej stronie odbieram:lblImie.Text = Session ("Imie")Niestety nie działa mi to rozwiązanie. Uzywałem zmiennych sesyjnych wielokrotnie w VS2003 (VB.NET), teraz przesiadłem się na VS2005 (C#) i mam z tym (nieoczekiwane;)) problemy. Moja prośba jest następująca: czy mógłby mi ktoś z Was napisać jakiś przykład (może być bardzo prosty, chciałbym zobaczyć co robie źle...może źle tworzę zmienna?). Dzięki za pomoc.pozdrawiamm3ss





zooly
zooly
1812 pkt.
Guru
 
0


//zapisSession["Imie"] = txtImie.Text;//i odczytlblImie.Text = (string)Session["Imie"];


User 117497
User 117497
54 pkt.
Poczatkujacy
 
0


    Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)        ' Code that runs when a new session is started        Session.Add("kategorie", "")    End Subzapis:Session("kategorie") = 402odczyt:Label1.Text = Session("kategorie")Przepraszam Cie ale nie zauwazylem, ze chcesz w C#, to co napisalem jest w VB :|

WayneDark
WayneDark
121 pkt.
Junior
 
0


Dzięki panowie za pomoc.@dziabel: nie szkodzi :)pozdrawiamm3ss

WayneDark
WayneDark
121 pkt.
Junior
 
0


Wpadłem na troche inny pomysł :> Chciałbym przechowywać elementy pobrane z formularza w tablicy, a tablicę przesyłać jako zmienną sesyjną. Nie chcę używać wielu zmiennych sesyjnych dlatego że zamysł jest taki że użytkownik będzie mógł sobie zdefiniować poszczególne parametry produktu i na tej podstawie ma byc tworzony wpis w koszyku. Mam nadzieje, że udało mi się opisać istotę problemu. Jeżeli ktoś ma jakieś sugestie, wskazówki, przykłady będę bardzo wdzięczny.//edit: domyślam się, że będę musiał stworzyć jakąś klasę...pozdrawiam mess

zooly
zooly
1812 pkt.
Guru
 
0


Olej sesję, są wygodniejsze sposoby ;) - Możesz wykorzystać właściwość PostBackUrl (dostępna dla przycisków i linkbutton'ów, imagebutton'ów).Załóżmy że dane wpisujesz w polu tekstowym na stronie Default.aspx i chcesz je odebrać na Other.aspx. Ustaw PostBackUrl przycisku akceptującego dane na "~/Other.aspx". Teraz każde jego kliknięcie spowoduje przesłanie danych do strony Other.aspx.Na drugiej stronie dane możesz odebrać na dwa sposoby:poprzez publiczną właściwośćza pomocą metody FindControlA oto i one[Kod C#]protected void Page_Load(object sender, EventArgs e){    if( PreviousPage == null )    {        lblResult.Text = "brak poprzedniej strony";        return;    }    //sposob 1:    _Default d = (_Default)PreviousPage;    lblResult.Text = string.Format("wpisano: {0}", d.EnteredText);    //sposob 2:    TextBox msg = (TextBox)PreviousPage.FindControl("txtMessage");    lblResult.Text = string.Format("wpisano: {0}", msg.Text);}Alternatywnie możesz zrezygnować z PostBackUrl na rzecz Server.Transfer wywoływanego na pierwszej stronie:[Kod C#]Server.Transfer("~/Other.aspx");To zadziała bez użycia skryptów JS, ale nie spowoduje zmiany adresu strony (użytkownik dalej będzie myślał że znajduje się na Default.aspx).Jeśli chcesz poczytać o Cross-Page postingu to zapraszam do lektury Cross-Page Posting in ASP.NET Web Pages (MSDN).Daj znać, jeśli chcesz zapoznać się z przykładowym kodem.


WayneDark
WayneDark
121 pkt.
Junior
 
0


@zooly580: po raz kolejny wielkie dzięki za pomoc, zabieram sie za pisanie...jak natrafię na problem to na pewno się zgłoszę - jeszcze raz wielkie dzięki pozdrawiam m3ss

WayneDark
WayneDark
121 pkt.
Junior
 
0


Jednak poproszę o przykład - będzie łatwiej. Mam jeszcze pytanie: czy przenoszone dane za pomocą tego mechanizmy mogę wykorzystać dowolnie, tzn mogę je wyświetlić w label'u lub wstawić jako parametry do zapytania?//edit: To działa :)[Kod C#]protected void Page_Load(object sender, EventArgs e)
{

  if (Page.PreviousPage != null)
  {
   TextBox SourceTextBox =
(TextBox)Page.PreviousPage.FindControl("txtTest");
     if (SourceTextBox != null)
  {
    lblTest.Text = SourceTextBox.Text;
  }
 }
}pozdrawiamm3ss

zooly
zooly
1812 pkt.
Guru
 
0


Ekstra, kod wklejam dla zainteresowanych:
[Kod C#, Default.aspx]<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="txtMessage" runat="server"></asp:TextBox>
        <asp:Button ID="btnSubmit" runat="server" OnClick="btnSubmit_Click" Text="Wyślij" /></div>
    </form>
</body>
</html>

[Kod Default.aspx.cs]using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }

    public string EnteredText
    {
        get
        {
            return txtMessage.Text;
        }
    }
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        Server.Transfer("~/Other.aspx");
    }
}

[Kod C#, Other.aspx]<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Other.aspx.cs" Inherits="Other" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:Label ID="lblResult" runat="server"></asp:Label>
    </div>
    </form>
</body>
</html>

[Kod C#, Other.aspx.cs]using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class Other : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (PreviousPage == null)
        {
            lblResult.Text = "brak poprzedniej strony";
            return;
        }

        _Default d = (_Default)PreviousPage;
        lblResult.Text = string.Format("wpisano: {0}", d.EnteredText);

        //albo:
        TextBox msg = (TextBox)PreviousPa


WayneDark
WayneDark
121 pkt.
Junior
 
0


Chciałem przetestować Twój przykład, ale pojawił mi się błąd:Błąd parsowania XML: nie znaleziono elementuObszar: http://localhost:3452/Baza/koszyk.aspxNumer linii 1, kolumna 1:(przeglądarka FF2.0)Coś pominąłem?

zooly
zooly
1812 pkt.
Guru
 
0


Pewnie znaczniki zostały źle wklejone. Projekt spakowałem i wystawiłem na stronce.


WayneDark
WayneDark
121 pkt.
Junior
 
0


@zooly580: Dzięki za projekt.Zastanawiam się czy zastosowanie mechanizmu cross-page posting pozwoli mi na dodawanie kolejnych elementów do koszyka. Użytkownik w każdym momencie może sprawdzić stan swojego koszyka i powrócić do listy produktów i ewenualnie dodać nowy.

zooly
zooly
1812 pkt.
Guru
 
0


To zależy czy dodanie do koszyka będzie można zrealizować tylko z jednego miejsca (wtedy ok). Nie polecam, jeśli:chcesz mieć możliwość dodania z poziomu listy towarów, strony głównej czy np. list użytkowników. Będziesz musiał stworzyć jakąś klasę bazową dla stron umożliwiających dodanie towaru do koszyka (lub skończysz z ogromnym switchem ;)na pewno będziesz chciał dodać Ajaxa i kontrolkę UpdatePanel - Server.Transfer wtedy nie zadziała, PostBackUrl - tak


Udziel odpowiedzi

pkt.
Treść wpisu:

Zaloguj się lub Zarejestruj się aby wykonać tę czynność.