簡體   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