2012-01-09 7 views
6

Ho due listbox (listbox 1 e listbox2) .i ho usato il seguente codice javscript per spostare il valore da una listbox ad un'altra.sposta il valore da una listbox ad un'altra usando javascript e quindi leggi il valore utilizzando 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> 

Questo codice si muove valore da un listbox ad un altro, ma in realtà quando provo a leggere il secondo valori ListBox, uno a whhich valori vengono copiati, io non sono in grado di leggere quei valori. quando lo controllo mostra ListBox2.Items.Count è 0

+8

Non sono sicuro, ma c'è lo stato di visualizzazione associato ai controlli di asp.net, dato che si stanno aggiungendo elementi sul lato client, potrebbe non riflettersi sul server. Qualcuno si prega di correggere se ho torto. –

+0

Forse questo può aiutare: http://extendedlistbox.codeplex.com/. Sostituisce al volo una listbox html con due elenchi a discesa, con pulsanti per spostarsi tra i due. Da un lato del server, è facile da manipolare mentre si lavora con una semplice casella di riepilogo con selezione multipla. ** Disclaimer ** Sono il creatore del progetto –

+0

Ecco un modo per farlo: http://www.dotnet-developer.de/2008/07/aspnet2005/ajax/using-javascript-on-listboxes-in -aspnet / – keyboardP

risposta

4

Come ha dichiarato Amar Palsapure nei commenti, le modifiche su clientide con javascript non si riflettono sul lato server senza alcun attacco da parte dell'utente (aggiungere i valori ai campi nascosti ecc. Dare un'occhiata here), quindi non si sarebbe in grado per vedere le modifiche lato server. Presumo che la linea ListBox2.Items.Count sia lato server.

Sarebbe molto meglio e più semplice per te se esegui una richiesta Ajax e lo faccia lato server all'interno di un pannello di aggiornamento.

0

Assicurarsi che nella pagina di caricamento non si stia scrivendo più i valori inserendo il codice di impostazione listbox in un'istruzione if assicurandosi che non sia un postback.

0

Il processo lato server (C) non è in grado di leggere dal client, senza una richiesta HTTP - ricaricamento della pagina (che probabilmente non è quello che si vuole fare). Il tuo javascript sembra buono, ma probabilmente hai bisogno di usare la tecnica AJAX, che consente al codice client di parlare con il codice del tuo server senza ricaricare la pagina nel tradizionale modello di richiesta HTTP.

Provare a utilizzare la libreria JQuery per facilitare l'impostazione della richiesta al server. http://api.jquery.com/jQuery.ajax/

0

Come suggerito da TBohnen.jnr, si consiglia di utilizzare un pannello di aggiornamento e quindi un Asynchrounous Postback Trigger per aggiornare il pannello di aggiornamento. Dovrai inserire le caselle di riepilogo all'interno del pannello e poi avere un evento che tu sollevi quando il contenuto viene spostato.

Problemi correlati