Panowie mam 2 formatki 1)jest z textboxami 2) jest z gridem i teraz w metodzie Page_Load w tej 1 chce przypisac tym texboxom wartosci z grida z tej 2 formatki.Problem w tym ze ta 1 nie widzi tego grida z tej 2 w jaki sposob mam jej pokazac tego grida?
Po Page_Load domyślam się że to aplikacja web (asp .net). Nie da się tak jak chcesz, bo kiedy strona 1 istnieje, to pewnie 2 już nie istnieje. Chyba że pokazujesz ją w popup.
Możesz w request przekazać dane z jednej strony do drugiej, lub przez sesję. Lub do strony 1 przekazać id rekordu, który ona zassie z bazy do edycji. Albo edycję rekordu przeprowadzać w grid.
A masz moze gdzies jakis przyklad jak to sie robi no i jak lepiej requstem czy przez sesje?
Dobra ogarnalem to troche i mam tak na 1 formie jest button (tylko ze on jest w gridview) z tym zdarzeniem:
protected void GridView3_RowCommand(object sender, GridViewCommandEventArgs e)
{
this.Server.Transfer("EdycjaNewslettery.aspx");
}
A na drugiej formatce mam w Page_Load tak :
protected void Page_Load(object sender, EventArgs e)
{
GridView grid = (GridView)PreviousPage.FindControl("GridView3");
this.TextBox1.Text = grid.SelectedRow.Cells[1].Text;
}
Ale tutaj
GridView grid = (GridView)PreviousPage.FindControl("GridView3");
on mi nie przypisuje tego grida z tamej formatki jest null,dlaczego?
Pewno dlatego, że po przekierowaniu poprzednia strona już nie istnieje, więc jej kontrolki również.
Wiesz co zrobilem cos takiego za pomoca cookies:
To jest 1 formatka
protected void GridView3_SelectedIndexChanged(object sender, EventArgs e)
{
TextBox1.Text = GridView3.SelectedRow.Cells[1].Text;
//int id = Convert.ToInt32(TextBox1.Text);
if (this.Request.Browser.Cookies)
{
HttpCookie cookie = new HttpCookie("myCookie");
//dodac values !!!
cookie.Values["ID"] = GridView3.SelectedRow.Cells[2].Text;
//cookie.Values["Adres_email"] = GridView3.SelectedRow.Cells[3].Text;
//cookie.Values["Blad"] = GridView3.SelectedRow.Cells[5].Text;
cookie.Values["IdFlamenco_emailu"] = GridView3.SelectedRow.Cells[6].Text;
cookie.Values["IdFlamenco_newslettera"] = GridView3.SelectedRow.Cells[7].Text;
//cookie.Values["Aktywny"] = GridView3.SelectedRow.Cells[8].Text;
cookie.Values["Id_pliku"] = GridView3.SelectedRow.Cells[9].Text;
//cookie.Values["Data_zmiany"] = GridView3.SelectedRow.Cells[10].Text;
//cookie.Values["Przyczyna_rezygnacji"] = GridView3.SelectedRow.Cells[11].Text;
this.Response.Cookies.Add(cookie);
}
else
{
this.Response.Write("Przegladarka nie obsługuje ciastek!!!");
}
}
To jest 2:
protected void Page_Load(object sender, EventArgs e)
{
HttpCookie cookie = this.Request.Cookies["myCookie"];
this.TextBox11.Text = cookie.Values["ID"];
// this.TextBox2.Text = cookie.Values["Adres_email"];
//this.TextBox7.Text = cookie.Values["Blad"];
this.TextBox1.Text = cookie.Values["IdFlamenco_emailu"];
this.TextBox3.Text = cookie.Values["IdFlamenco_newslettera"];
// this.TextBox4.Text = cookie.Values["Aktywny"];
this.TextBox8.Text = cookie.Values["Id_pliku"];
// this.TextBox9.Text = cookie.Values["Data_zmiany"];
// this.TextBox10.Text = cookie.Values["Przyczyna_rezygnacji"];
}
Tylko ze cos jest nie tak ale jest to bardzo dziwny problem.Jezeli jest tak jak tu to do textboxow po zaznaczeniu wiersza w gridzie wrzuca mi te wszystkie Id.
Jezeli jednak odkomentuje zakomentowane to po wybraniu select wiersza ktory ma 3 lub 2 puste wyswietla mi tylko ID i email a reszt nie.Co moze byc nie tak ?
Te 2 lub 3 to puste wartosci w kolumnach w gridzie.
A nie prościej przesłać te parametry w adresie albo (co gorsze) przekazać przez Session?
No moze i prosciej ale chcialbym rozwiazac ten problem bo jest bardzo nietypowy :) ale ok przez session to chodzi o plik global,tak?
To nie jest żaden "nietypowy problem", przekazywanie danych między stronami, to jest coś, co robi się miliony razy dziennie przy tworzeniu aplikacji WWW.
mihol napisał(a)
No moze i prosciej ale chcialbym rozwiazac ten problem bo jest bardzo nietypowy :) ale ok przez session to chodzi o plik global,tak?
Nie znasz podstawowych podstaw. Niewiele zdziałasz, jeśli nie poświęcisz czasu na ich nauczenie.
Na stronie 1.aspx:
Session["coś"] = "wartość cosia";
Na stronie 2.aspx:
this.Label1.Text = (string)Session["coś"];
Skoro nie jest nie typowy to dlaczego mi nie powiesz co jest nie tak ?
Bo dostałeś raz odpowiedź od massthera, drugi raz ode mnie i nawet jeszcze przykład jednego z rozwiązań.
No ok to podaliscie mi inne rozwiazanie ale ja dalej mowie o tych moich danych przekazywanych przez ciasteczka.Bo tutaj sie dzieje dziwna rzecz.Tak dla przypomnienia.Jezeli jest tak jak teraz tam na gorze w kodzie to jest ok,bo email mam w textboxie email itd ale jak odkomentuje zakomentowane to pozniej w jaki rekord nie klikne,po przejsciu na 2 formatke czyli tam gdzie sa te textboxy, wypelnia mi tylko textbox ID i email a reszta jest pusta i nie wiem dlaczego.To jest moj problem aczkolwiek za inne rozwiazanie wielkie dzieki,tylko myslalem ze moze ktos cos bedzie wiedzial a moze sie z czyms takim juz spotkał.
mihol napisał(a)
Jezeli jednak odkomentuje zakomentowane to po wybraniu select wiersza ktory ma 3 lub 2 puste wyswietla mi tylko ID i email a reszt nie.Co moze byc nie tak ?
Możliwe, że nie odnajduje wartości i nawet rzuca jakimś wyjątkiem, ale nie dowiadujesz się o tym. Debugowałeś?
Tak i nic tam takiego nie ma co bylo co mogloby wskazywac na to, ze jest cos nie tak a jednak jest.