переместить значение из одного списка в другое, используя JavaScript, а затем прочитать значение с помощью C # - PullRequest
6 голосов
/ 09 января 2012

У меня есть два списка (listbox 1 и listbox2). Я использовал следующий код JavaScript для перемещения значения из одного списка в другое.

 <script language="javascript" type="text/javascript">

function fnMoveItems(lstbxFrom,lstbxTo)
{
 var varFromBox = document.all(lstbxFrom);
 var varToBox = document.all(lstbxTo); 
 if ((varFromBox != null) && (varToBox != null)) 
 { 
  if(varFromBox.length < 1) 
  {
   alert('There are no items in the source ListBox');
   return false;
  }
  if(varFromBox.options.selectedIndex == -1) // when no Item is selected the index will be -1

  {
   alert('Please select an Item to move');
   return false;
  }
  while ( varFromBox.options.selectedIndex >= 0 ) 
  { 
   var newOption = new Option(); // Create a new instance of ListItem 

   newOption.text = varFromBox.options[varFromBox.options.selectedIndex].text; 
   newOption.value = varFromBox.options[varFromBox.options.selectedIndex].value; 
   varToBox.options[varToBox.length] = newOption; //Append the item in Target Listbox

   varFromBox.remove(varFromBox.options.selectedIndex); //Remove the item from Source Listbox 

  } 
 }
 return false; 
}
</script>

Этот код перемещает значение из одного списка в другое, но на самом делеКогда я пытаюсь прочитать значения второго списка, то есть копировать одно значение, я не могу прочитать эти значения.когда я проверяю, это показывает ListBox2.Items.Count 0

Ответы [ 4 ]

4 голосов
/ 09 января 2012

Как отметил Амар Палсапур в комментариях, изменения на стороне клиента с использованием javascript не отражаются на стороне сервера без какого-либо взлома с вашей стороны (добавьте значения в скрытые поля и т. Д., Посмотрите здесь ), поэтомувы не сможете увидеть изменения на стороне сервера.Я предполагаю, что строка ListBox2.Items.Count на стороне сервера.

Было бы намного лучше и проще, если бы вы выполняли запрос ajax и выполняли его на стороне сервера в панели обновлений.

0 голосов
/ 09 января 2012

Как предложил TBohnen.jnr, я рекомендую использовать панель обновления, а затем Асинхронный триггер обратной передачи для обновления панели обновления.Вам нужно будет поместить списки внутри панели, а затем создать событие, которое вы вызываете при перемещении контента.

0 голосов
/ 09 января 2012

Процесс на стороне сервера (C) не может читать с клиента без HTTP-запроса - перезагрузка страницы (что, вероятно, не то, что вы хотите сделать).Ваш javascript выглядит хорошо, но вам, вероятно, нужно использовать технику AJAX, которая позволяет вашему клиентскому коду говорить с кодом вашего сервера без перезагрузки страницы в традиционной модели HTTP-запросов.

Попробуйте использовать библиотеку JQuery, чтобы помочь в настройкеВаш запрос на сервер.http://api.jquery.com/jQuery.ajax/

0 голосов
/ 09 января 2012

Убедитесь, что при загрузке страницы вы не перезаписываете значения, поместив код настройки списка в оператор if, убедившись, что это не обратный вызов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...