| [C#, VS2005] Refencja od obiektu [wiadomość #783] |
pon, 16 lipiec 2007 16:32  |
MP Wiadomości: 13 Dołączył(a): maj 2007 |
Junior Member |
|
|
Jak w obiekcie prechowywac referencje odo innego obiektu?
Standardowe przypisanie:
oOb1 = oOb2;
w oOb1 tworzy oddzielna kopie. A ja chce oObj1 miesc referencje do obiektu
oOb2, tak aby jegeo stan byl bezposrednim odbiciem stanu w oOb2.
MP
|
|
|
|
|
|
|
| Re: [C#, VS2005] Refencja od obiektu [wiadomość #792 (odpowiedź na #786) ] |
wto, 17 lipiec 2007 16:50   |
MP Wiadomości: 13 Dołączył(a): maj 2007 |
Junior Member |
|
|
Użytkownik "Artur" <fdsfsd@fdasfs.pl> napisał w wiadomości
news:f7hrmu$es4$1@inews.gazeta.pl...
>
> "MP" <marek@w.tkb.pl> wrote in message
> news:f7gnu9$rhe$1@atlantis.news.tpi.pl...
>>
>> Użytkownik "Artur" <fdsfsd@fdasfs.pl> napisał w wiadomości
>> news:f7gn05$nk6$1@inews.gazeta.pl...
>>>
>>> "MP" <marek@w.tkb.pl> wrote in message
>>> news:f7gkt8$15j$1@nemesis.news.tpi.pl...
>>>> Jak w obiekcie prechowywac referencje odo innego obiektu?
>>>>
>>>> Standardowe przypisanie:
>>>>
>>>> oOb1 = oOb2;
>>>>
>>>> w oOb1 tworzy oddzielna kopie.
>>>
>>> to chyba w C++, w c# tylko referencja jest kopiowana.
>>>
>>
>> Więc jak zrobić coś takiego w ASP.NET:
>>
>> W PlaceHolder umiesczam liste kontrolek zbudowana o elementow HTML oraz
>> edytowalnych kontrolek. Liste te dodaje do PlaceHolder.Controls i
>> spowiewalem sie, ze ta lista z kontrolkami edytowalnymi bedzie
>> odzwiercielala zapisy w kontrolkach polozonych na stronie. Ale tak nie
>> jest. Jak wieco odczytac biezaca zawartosc tych kontrolek?
>
> No jest cos takiego jak "page lifecycle", czyli kolejne fazy przetwazania
> przez jakie przechodzi kontrolka. (OnInit, Init, PreLoad , Load itd ...).
> W kazdej z tych faz costam sie dzieje (nigdy nie wiem co). Pewnie
> pobierasz zawartosc kontrolki nie w tej fazie co trzeba. Zawartosc
> kontrolki jest ustawiana w ktorejs tam fazie i wczesniej jej po prostu nie
> ma.
> rzuc sobie na to okiem i moze dojdziesz co robisz nie tak:
> http://msdn2.microsoft.com/en-us/library/ms178472.aspx
>
Jezeli zostaje odpalone zdarzenie Click dla button, to jestem w fazie
PostBack i normalnie moge przeciez uzyskiwac w tej fazie zawartosc kontrolek
(aktualna). Ale poniewaz wiem, ze z niektorymi kontrolkami zachodzi
koniecznosc walidacji wiez wywolalem Validate() w metodzie obslugi Click ale
to i tak nie daje rezultatu.
MP
|
|
|
|
| Re: [C#, VS2005] Refencja od obiektu [wiadomość #794 (odpowiedź na #792) ] |
wto, 17 lipiec 2007 17:37   |
Artur Wiadomości: 6 Dołączył(a): kwiecień 2007 |
Junior Member |
|
|
"MP" <marek@w.tkb.pl> wrote in message
news:f7ja4u$sdo$1@atlantis.news.tpi.pl...
>
> Użytkownik "Artur" <fdsfsd@fdasfs.pl> napisał w wiadomości
> news:f7hrmu$es4$1@inews.gazeta.pl...
>>
>> "MP" <marek@w.tkb.pl> wrote in message
>> news:f7gnu9$rhe$1@atlantis.news.tpi.pl...
>>>
>>> Użytkownik "Artur" <fdsfsd@fdasfs.pl> napisał w wiadomości
>>> news:f7gn05$nk6$1@inews.gazeta.pl...
>>>>
>>>> "MP" <marek@w.tkb.pl> wrote in message
>>>> news:f7gkt8$15j$1@nemesis.news.tpi.pl...
>>>>> Jak w obiekcie prechowywac referencje odo innego obiektu?
>>>>>
>>>>> Standardowe przypisanie:
>>>>>
>>>>> oOb1 = oOb2;
>>>>>
>>>>> w oOb1 tworzy oddzielna kopie.
>>>>
>>>> to chyba w C++, w c# tylko referencja jest kopiowana.
>>>>
>>>
>>> Więc jak zrobić coś takiego w ASP.NET:
>>>
>>> W PlaceHolder umiesczam liste kontrolek zbudowana o elementow HTML oraz
>>> edytowalnych kontrolek. Liste te dodaje do PlaceHolder.Controls i
>>> spowiewalem sie, ze ta lista z kontrolkami edytowalnymi bedzie
>>> odzwiercielala zapisy w kontrolkach polozonych na stronie. Ale tak nie
>>> jest. Jak wieco odczytac biezaca zawartosc tych kontrolek?
>>
>> No jest cos takiego jak "page lifecycle", czyli kolejne fazy przetwazania
>> przez jakie przechodzi kontrolka. (OnInit, Init, PreLoad , Load itd ...).
>> W kazdej z tych faz costam sie dzieje (nigdy nie wiem co). Pewnie
>> pobierasz zawartosc kontrolki nie w tej fazie co trzeba. Zawartosc
>> kontrolki jest ustawiana w ktorejs tam fazie i wczesniej jej po prostu
>> nie ma.
>> rzuc sobie na to okiem i moze dojdziesz co robisz nie tak:
>> http://msdn2.microsoft.com/en-us/library/ms178472.aspx
>>
>
> Jezeli zostaje odpalone zdarzenie Click dla button, to jestem w fazie
> PostBack i normalnie moge przeciez uzyskiwac w tej fazie zawartosc
> kontrolek (aktualna). Ale poniewaz wiem, ze z niektorymi kontrolkami
> zachodzi koniecznosc walidacji wiez wywolalem Validate() w metodzie
> obslugi Click ale to i tak nie daje rezultatu.
zrobilem najprostsza strone:
UpadatePanel, w srodku PlaceHolder i Button.
(...)
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click"
Text="Button" />
</ContentTemplate>
</asp:UpdatePanel>
(...)
CodeBehind:
(...)
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Control tb1 = new TextBox();
tb1.ID = "dupa";
PlaceHolder1.Controls.Add(tb1);
}
protected void Button1_Click(object sender, EventArgs e)
{
string s = ((TextBox)PlaceHolder1.FindControl("dupa")).Text; ;
}
}
(...)
i po kliknieciu w przycisk w zmiennej "s" jest to co wpisze w textboxa na
stronie. Takze wszystko dziala tak jak powinno.
|
|
|
| Re: [C#, VS2005] Refencja od obiektu [wiadomość #801 (odpowiedź na #794) ] |
czw, 19 lipiec 2007 05:40   |
MP Wiadomości: 13 Dołączył(a): maj 2007 |
Junior Member |
|
|
Użytkownik "Artur" <fdsfsd@fdasfs.pl> napisał w wiadomości
news:f7jcqv$6ii$1@inews.gazeta.pl...
>
> "MP" <marek@w.tkb.pl> wrote in message
> news:f7ja4u$sdo$1@atlantis.news.tpi.pl...
>>
>> Użytkownik "Artur" <fdsfsd@fdasfs.pl> napisał w wiadomości
>> news:f7hrmu$es4$1@inews.gazeta.pl...
>>>
>>> "MP" <marek@w.tkb.pl> wrote in message
>>> news:f7gnu9$rhe$1@atlantis.news.tpi.pl...
>>>>
>>>> Użytkownik "Artur" <fdsfsd@fdasfs.pl> napisał w wiadomości
>>>> news:f7gn05$nk6$1@inews.gazeta.pl...
>>>>>
>>>>> "MP" <marek@w.tkb.pl> wrote in message
>>>>> news:f7gkt8$15j$1@nemesis.news.tpi.pl...
>>>>>> Jak w obiekcie prechowywac referencje odo innego obiektu?
>>>>>>
>>>>>> Standardowe przypisanie:
>>>>>>
>>>>>> oOb1 = oOb2;
>>>>>>
>>>>>> w oOb1 tworzy oddzielna kopie.
>>>>>
>>>>> to chyba w C++, w c# tylko referencja jest kopiowana.
>>>>>
>>>>
>>>> Więc jak zrobić coś takiego w ASP.NET:
>>>>
>>>> W PlaceHolder umiesczam liste kontrolek zbudowana o elementow HTML oraz
>>>> edytowalnych kontrolek. Liste te dodaje do PlaceHolder.Controls i
>>>> spowiewalem sie, ze ta lista z kontrolkami edytowalnymi bedzie
>>>> odzwiercielala zapisy w kontrolkach polozonych na stronie. Ale tak nie
>>>> jest. Jak wieco odczytac biezaca zawartosc tych kontrolek?
>>>
>>> No jest cos takiego jak "page lifecycle", czyli kolejne fazy
>>> przetwazania przez jakie przechodzi kontrolka. (OnInit, Init, PreLoad ,
>>> Load itd ...). W kazdej z tych faz costam sie dzieje (nigdy nie wiem
>>> co). Pewnie pobierasz zawartosc kontrolki nie w tej fazie co trzeba.
>>> Zawartosc kontrolki jest ustawiana w ktorejs tam fazie i wczesniej jej
>>> po prostu nie ma.
>>> rzuc sobie na to okiem i moze dojdziesz co robisz nie tak:
>>> http://msdn2.microsoft.com/en-us/library/ms178472.aspx
>>>
>>
>> Jezeli zostaje odpalone zdarzenie Click dla button, to jestem w fazie
>> PostBack i normalnie moge przeciez uzyskiwac w tej fazie zawartosc
>> kontrolek (aktualna). Ale poniewaz wiem, ze z niektorymi kontrolkami
>> zachodzi koniecznosc walidacji wiez wywolalem Validate() w metodzie
>> obslugi Click ale to i tak nie daje rezultatu.
>
> zrobilem najprostsza strone:
> UpadatePanel, w srodku PlaceHolder i Button.
>
> (...)
> <asp:UpdatePanel ID="UpdatePanel1" runat="server">
> <ContentTemplate>
> <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click"
> Text="Button" />
> </ContentTemplate>
> </asp:UpdatePanel>
> (...)
>
> CodeBehind:
>
> (...)
> public partial class _Default : System.Web.UI.Page
> {
> protected void Page_Load(object sender, EventArgs e)
> {
> Control tb1 = new TextBox();
> tb1.ID = "dupa";
> PlaceHolder1.Controls.Add(tb1);
> }
> protected void Button1_Click(object sender, EventArgs e)
> {
> string s = ((TextBox)PlaceHolder1.FindControl("dupa")).Text; ;
> }
> }
> (...)
>
> i po kliknieciu w przycisk w zmiennej "s" jest to co wpisze w textboxa na
> stronie. Takze wszystko dziala tak jak powinno.
Wzialem ten kawalek kodu i wkleilem go i dziala. Ale ja mam zlozona
strukture zbudowana z tabel, wierszy tabel, komorek tabel, list kontrolek
etc. i to nie daje wlasciwego efektu. Gdzies jest zapewne bug...
MP
|
|
|
| Re: [C#, VS2005] Refencja od obiektu [wiadomość #802 (odpowiedź na #783) ] |
czw, 19 lipiec 2007 07:51  |
MP Wiadomości: 13 Dołączył(a): maj 2007 |
Junior Member |
|
|
Użytkownik "MP" <marek@w.tkb.pl> napisał w wiadomości
news:f7gkt8$15j$1@nemesis.news.tpi.pl...
> Jak w obiekcie prechowywac referencje odo innego obiektu?
Dzieki wszystkim za odzew.
Problem zostal rozwiazany ale jego rozwiazanie jest zupelnie dla mnie
niezrozumiale.
Poprzedni kod:
==========================
privste void cos_tam() {
PlaceHolder ph = LoginView1.FindControl("ph");
HtmlTable oTable = traverse();
ph.Controls.Add(oTable);
}
private HtmlTable traverse()
{
HtmlTable oTable = new HtmlTable();
/* tu kod */
return oTable;
}
////////////////////////////////////////////
Nowy kod:
private void cos_tam() {
PlaceHolder ph = LoginView1.FindControl("ph");
traverse(ph);
}
private void traverse(PlaceHolder ph)
{
HtmlTable oTable = new HtmlTable()
/* ten sam kod co powyzej */
ph.Controls.Add(oTable);
}
/////////////////////////
Dlaczego w pierwszym przypadku nie dziala a w drugim dziala?
MP
|
|
|
Łączny czas generowania strony wyniósł 0,00759 sekund.