Przekazywanie wartości zmiennych z JS do ASP.NET

0

Witam wszystkich.

Utworzyłem pole ukryte HiddenField1, nadaje mu wartość w JS i później próbuję odczytać jego wartość w ASP.NET, ale cały czas odczytuję wartość pustą. Co źle robię, może jest jakaś inna lepsza metoda do czegoś takiego?

 <script type="text/javascript">

                $(document).ready(function () {
                    var i = 0;
                    var source = [];
                    var max = "<%= odp_table.Rows.Count %>";

                    for (i = 0; i < max; i++) { 
                        document.getElementById("HiddenField1").value = i.toString();
                        source[i] = "<%= odp_table.Rows[Convert.ToInt32(HiddenField1.Value)]["OPIS"].ToString() %>";
                   
                    }

  </script>

  <asp:HiddenField ID="HiddenField1" runat="server" /> 


 
1

No to kompletnie nie tak. Aby z js coś trafiło na serwer musisz to tam wysłać (dla uproszczenia - wykonać request do servera np. ajaxem).
Ty pomieszałeś kod który wykonuje się na serwerze (<% ... %>) z kodem js, który wykonuje się w przeglądarce klienta.

Dostęp do odp_table masz tylko po stronie serwera i to tam musisz mieć kod, który stworzy tablicę js (choć lepiej byłoby zwrócić obiekt JSON, niż "ręcznie" kleić tablicę javascriptową).
Jeśli już chcesz tą tablicę mieć w js, to np.:

 
<%
var sb = new StringBuilder();
foreach(var row in odp_table.Rows)
  sb.AppendFormat("'{0}',", row["OPIS"]);
var strTab = "[" + sb.ToString() + "]";
%>

var source = <%= strTab %>;

Kod na serwerze (oczywiście jest on syfny :) więc się nie wzoruj na nim) wygenerował tablicę js do stringa, który został wpisany na etapie renderowania strony we wskazane miejsce. W tym przypadku string został wstawiony w miejsce wartości javascriptowej zmiennej source. Teraz po załadowaniu strony możesz z tą teblicą w js robić co chcesz.

0

dziękuję Ci za pomoc ;)

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