繁体   English   中英

使用javascript将值从一个列表框移动到另一个列表框然后使用c#读取值

[英]move value from one listbox to other using javascript and then read value using c#

我有两个列表框(列表框1和列表框2).i使用以下javscript代码将值从一个列表框移动到另一个列表框。

 <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

正如Amar Palsapure在评论中指出的那样,客户端使用javascript的更改并不反映在服务器端而没有您的一些黑客攻击(将值添加到隐藏字段等等,请查看此处 ),因此您将无法看到更改服务器端。 我假设行ListBox2.Items.Count是服务器端。

如果您执行ajax请求并在更新面板中执行服务器端,那么对您来说会更好,更容易。

确保在页面加载时不要将列表框设置代码放在if语句中,以确保它不是回发。

没有HTTP请求的服务器端进程(C)无法从客户端读取 - 页面重新加载(这可能不是您想要做的)。 您的javascript看起来不错,但您可能需要使用AJAX技术,它允许您的客户端代码与您的服务器代码通信,而无需在传统的HTTP请求模型中重新加载页面。

尝试使用JQuery库来帮助设置对服务器的请求。 http://api.jquery.com/jQuery.ajax/

正如TBohnen.jnr建议我建议使用更新面板,然后使用Asynchrounous Postback Trigger刷新更新面板。 您需要将列表框放在面板中,然后在移动内容时生成一个事件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM