asp.net i javascript

0

Witam!

Jestem początkujący w asp.net, javascript i mam problem, z którym nie mogę sobie poradzić:(
Chodzi o odwoływanie się za pomocą javascript do kontrolek. (Framework 3.5, Visual Studio 2008)

Do zmiany tekstu kontrolki Label10 używam:

document.getElementById('ctl00_ContentPlaceHolder1_Label10').innerHTML = "Dodawanie nowego Klienta";

i to działa ok, jeśli odpalam projekt lokalnie z poziomu Visual Studio.... doszedłem do tego, że ID kontrolki jest zmieniane podczas tworzenia dokumentu HTML. Dlatego w skryptach po prostu dodałem "ctl00_ContentPlaceHolder1_" i działa.
Po przeniesieniu aplikacji na serwer IIS (Windows 2003 Server) w generowanym dokumencie HTML ID kontrolki wygląda tak: "ContentPlaceHolder1_Label10"

Czy może ktoś wytłumaczyć, dlaczego tak się dzieje i czy można zrobić coś, aby to ID było zawsze takie samo?
Przeszukałem fora i google i coś jest na ten temat, ale niestety wszelkie próby w kodzie nic nie dały:(

Pozdrawiam!

Michał

0

Znam dwa rozwiązania:

  1. Wygenerowanie kodu skryptu w code behind podczas Page_Load i dynamiczne zarejestrowanie w kodzie strony (Page.ClientScript.RegisterStartupScript). W tak wygenerowany kod wstawisz sobie Label10.ClientID zamiast swojego stałego tekstu, więc zawsze będzie tam prawidłowe id htmlowej kontrolki.
  2. Użyć jQuery, wówczas trzeba będzie napisać coś w ten deseń: $("[id$='Label10']").html("Dodawanie nowego Klienta");

Zdecydowanie polecam drugie rozwiązanie, bo jest mniej roboty i łatwiej później to utrzymać. (Bo nie pojawiają się na stronie skrypty "znikąd".)

0

Dzięki za odpowiedź i naprowadzenie czego użyć!!!

zadzałało to:

$("[id$='Label10']").html('Edycja danych Klienta');

Miałem natomiast mały problem z przeniesieniem danych wpisanych w textbox'ach do innych textbox'ów znajdujących się na kontrolce Panel, ale po długich poszukiwaniach w końcu znalazłem rozwiązanie... oczywiście też w jQuery :)

$("[id$='AddUwagi']").val($(":input[id$='TextUwagi']").val());

Jestem tylko ciekaw, czemu tak zmienia się to ID w kodzie... chyba ma to jakieś znaczenie?

0
michw napisał(a)

Jestem tylko ciekaw, czemu tak zmienia się to ID w kodzie... chyba ma to jakieś znaczenie?

Gdybyś to swoje Label10 umieścił w jakiejś UserControl, a potem kilka takich kontrolkek umieścił na jednej stronie, to byłoby kilka tagów HTML z tym samym ID. Ponieważ tak nie wolno, to ID, które Ty nadajesz kontrolce jest tak opakowywane, żeby się nie powtórzyło.

0

somekind dzięki za pomoc i wyjaśnienie o co chodzi z tym ID... teraz wszystko jest juz jaśniejsze :)

Pozdrawiam!

1 użytkowników online, w tym zalogowanych: 0, gości: 1