как прочитать переменную из клиентского скрипта?
От: yur_a_  
Дата: 21.01.09 09:31
Оценка:
Подскажите, пожалуйста, кто знает, как решить следующую проблему.
На сайт подгружается страничка:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="mypage.aspx.cs" Inherits="_degug" Debug="true" %>
<!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>
<script language="javascript">
  var MyAr = new Array(....);
  function setcheckitem(i)
  {
      MyAr[i]=...;
  }
 </script>
<form id="form1" runat="server">
    <div>
      <table id="QueList" border="1" cellspacing="2" cellpadding="10"   style="width:660px;">
      <tr id="row1"><td>ffffff</td><td><img id="img0"  src='default.gif'  OnClick='setcheckitem(0)' /></td></tr>
      <tr id="row2"><td>aaaaaa</td><td><img id="img1"  src='default.gif'  OnClick='setcheckitem(1)' /></td></tr>
      </table>
    </div>

    <div>
    <asp:Button runat="server" ID="aaa" Text="далее" OnClick="ClickItem" />
    </div>
    </form>
</body>
</html>

По клику на img выполняется setcheckitem(i) на клиентской стороне.
Как получить (или передать) массив MyAr для дальнешей обратотки в ClickItem(object sender, EventArgs e) на mypage.aspx.cs?
Спасибо.
Re: как прочитать переменную из клиентского скрипта?
От: thest Россия  
Дата: 21.01.09 09:58
Оценка:
Добавить в форму <input type="hidden"/>
Во время кликов на картинках сериализовать массив в этот hidden
Тогда после клика на кнопке hidden уйдёт на сервер и будет доступен для обработки
Re[2]: как прочитать переменную из клиентского скрипта?
От: yur_a_  
Дата: 21.01.09 11:43
Оценка:
Здравствуйте, thest, Вы писали:

T>Добавить в форму <input type="hidden"/>

T>Во время кликов на картинках сериализовать массив в этот hidden
T>Тогда после клика на кнопке hidden уйдёт на сервер и будет доступен для обработки

Извини, но лучше, если можно, поподробней....
Добавил на форму <input type="hidden" id = "ar_input" />.
А вот с сериализацией при клике на картинке в скрипте как-то так?
function setcheckitem(i)
  {
      MyAr[i]=...;
      document.all( "ar_input" ).value = MyAr; //???

  }


И потом на кнопке как к этому массиву подступиться?
protected void ClickItem(object sender, EventArgs e)
    {
        MyArray ar = Request.Headers.GetObjectData("ar_input"); //???
        .......
    }
Re[3]: как прочитать переменную из клиентского скрипта?
От: thest Россия  
Дата: 21.01.09 12:01
Оценка:
1. Поставить лучше не input a
<asp:HiddenField id="HiddenField1" runat=server />

чтобы удобнее было с ним работать в ASP.NET

2. При клике на картинке нужно сохранять все значения из массива в строку, разделённуе запятыми, и эту строку записать в HiddenField1:
document.getElementById(<%=HiddenField1.ClientID %>).Value=array_string


3. В C# получить значения примерно так:
HiddenField1.Value.Split(",")
Re[4]: как прочитать переменную из клиентского скрипта?
От: yur_a_  
Дата: 21.01.09 13:46
Оценка:
Здравствуйте, thest, Вы писали:

Чего-то не работает.
На форму вставил <asp:HiddenField id="HiddenField1" runat=server />.
Упрстил все до безобразия. Функия в скрипте по клику на картинке отрабатывает (видно по сообщению):
function setcheckitem(i)
  {
      alert("клик " + i);
      array_string = "my string"; 
      document.getElementById(<%=HiddenField1.ClientID %>).Value=array_string;    
  }

потом на кнопке:
protected void ClickItem(object sender, EventArgs e)
{
       string str = HiddenField1.Value.ToString();
       //str = null  ?
 }

HiddenField1.Value — пусто. Не могу понять почему?

Вот сама страница (в сокращении):
<!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> <script language="JavaScript" type="text/javascript">
     function setcheckitem(i)  
    {
        alert("клик " + i);
        array_string = "my string"; 
        document.getElementById(ctl00_HiddenField1).Value=array_string;    
    }

 </script>  
</head>
<body>
    <form name="aspnetForm" method="post" action="question.aspx" id="aspnetForm">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTEwMDUyNjYzMjhkZPrS1ANEydFjslrm/7ulT1CpKmok" />
</div>

    <input type="hidden" name="ctl00$HiddenField1" id="ctl00_HiddenField1" />
        
    <div>

      <table id="QueList" border="1" cellspacing="2" cellpadding="10"   style="width:660px;">
      <tr id="row1"><td>ffffff</td><td><img id="img0"  src='default.gif'  OnClick='setcheckitem(0)' /></td></tr>
      <tr id="row2"><td>aaaaaa</td><td><img id="img1"  src='default.gif'  OnClick='setcheckitem(1)' /></td></tr>
      </table>
    </div>
   <input type="submit" name="ctl00$ClickItem" value="далее" id="ctl00_ClickItem" />
          
    form>
</body>
</html>

Где-то ошибся, но вот где?
Re[5]: как прочитать переменную из клиентского скрипта?
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 21.01.09 15:45
Оценка: 2 (1)
Здравствуйте, yur_a_, Вы писали:

__>Здравствуйте, thest, Вы писали:


__>Чего-то не работает.

__>На форму вставил <asp:HiddenField id="HiddenField1" runat=server />.
__>Упрстил все до безобразия. Функия в скрипте по клику на картинке отрабатывает (видно по сообщению):
__>
__>function setcheckitem(i)
__>  {
__>      alert("клик " + i);
__>      array_string = "my string"; 
__>      document.getElementById(<%=HiddenField1.ClientID %>).Value=array_string;    
__>  }
__>



Ошибка тут: document.getElementById(<%=HiddenField1.ClientID %>).Value . На клиентской стороне свойство пишется с маленькой буквы
[КУ] оккупировала армия.
Re[6]: как прочитать переменную из клиентского скрипта?
От: Аноним  
Дата: 21.01.09 16:53
Оценка: -1
Здравствуйте, koandrew, Вы писали:

K>Ошибка тут: document.getElementById(<%=HiddenField1.ClientID %>).Value . На клиентской стороне свойство пишется с маленькой буквы


Больше ничего не мог придумать? Я бы тоже пошутил, но мне надо эту проблему решить.
Re[7]: как прочитать переменную из клиентского скрипта?
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 21.01.09 17:15
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Больше ничего не мог придумать? Я бы тоже пошутил, но мне надо эту проблему решить.


Это не шутка вообще-то...
[КУ] оккупировала армия.
Re[8]: как прочитать переменную из клиентского скрипта?
От: thest Россия  
Дата: 21.01.09 17:19
Оценка: 2 (1)
1. value действительно должно быть с маленькой буквы
2. забыл там кавычки

теперь строка такая:
document.getElementById("<%=HiddenField1.ClientID %>").value=array_string
Re[9]: как прочитать переменную из клиентского скрипта?
От: Аноним  
Дата: 21.01.09 17:40
Оценка:
Здравствуйте, thest, Вы писали:

T>1. value действительно должно быть с маленькой буквы

T>2. забыл там кавычки

T>теперь строка такая:

T>document.getElementById("<%=HiddenField1.ClientID %>").value=array_string

Прошу прощения у koandrew.
Теперь работает! Большое спасибо! Я очень рад.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.