2012-01-09 16 views
6

2つのリストボックス(リストボックス1とリストボックス2).iは次のjavscriptコードを使用して、値を1つのリストボックスから別のリストボックスに移動し、javascriptを使用して値を読み込み、Cを使用して値を読み取る#

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

このコードは、別のリストボックスから値を移動し、私は値がコピーされる1 whhichに第二のリストボックスの値を、読みしようとすると、実際に、私はそれらの値を読み取ることができないのです。私がチェックするとListBox2.Items.Countが0

+8

わかりませんが、asp.netコントロールに関連付けられたビューステートがあります。クライアント側で項目を追加すると、サーバーに反映されない可能性があります。私が間違っているなら誰でも修正してください。 –

+0

おそらくこれが役立つかもしれません:http://extendedlistbox.codeplex.com/。これは、2つのドロップダウンリスト、2つのボタンの間を移動するためのボタンで、HTMLのリストボックスをフライに置き換えます。サーバー側からは、複数の選択肢を持つ単純なリストボックスで作業するときに操作が簡単です。 **免責事項**私はプロジェクトの作成者です –

+0

これを実行する方法の1つがあります:http://www.dotnet-developer.de/2008/07/aspnet2005/ajax/using-javascript-on-listboxes-in -aspnet / – keyboardP

答えて

4

は、JavaScriptを使用してクライアント側での変更はあなたの部分にハッキングいくつか(見hereを持っているなど隠れたフィールドに値を追加)することなく、サーバ側で反映していないので、あなたはできないだろう変更のサーバー側を確認します。 私はラインListBox2.Items.Countがサーバ側であると仮定します。

ajaxリクエストを行い、更新パネル内でサーバー側を操作する方がずっと簡単です。

0

であることを確認します。リストボックスの設定コードをif文に入れて値を書き込んでいないことを確認して、ポストバックでないことを確認します。アマールPalsapureはコメントで述べたように

0

サーバーサイドプロセス(C)は、HTTPリクエスト - ページリロードなしでクライアントから読み取ることができません(これはおそらくあなたがやりたいことではありません)。あなたのJavaScriptはうまく見えますが、おそらくAJAXテクニックを使用する必要があります。これは、従来のHTTPリクエストモデルでページをリロードせずに、クライアントコードがサーバーコードと話すことを可能にします。

JQueryライブラリを使用して、サーバーへのリクエストの設定を支援してください。 http://api.jquery.com/jQuery.ajax/

0

TBohnen.jnrさんが提案したように、アップデートパネルを使用し、Asynchrounous Postback Triggerを使用してアップデートパネルを更新することをお勧めします。リストボックスをパネル内に配置し、コンテンツが移動されたときに発生させるイベントが必要です。

関連する問題