webForumDet fria alternativet

ListBox kopierat till ListBox2

.NET

9 svar · 644 visningar · startad av gerten

Medlem sedan mars 20048 inlägg
Frågan#1

Hej har en websida som jag kör i C# VS 2005 JAg har två st ListBox och väljer ut olika namn ur den ena ListBox "SpelareVal" med multipel markering och klickar på en knapp så skall valda namn kopieras över till den andra ListBox"SpelareValda"
Med SpelareValda.Items.Add(new ListItem(SpelarVal.SelectedItem.ToString()));

Men jag får bara det första namnet inte dom andra, om jag sedan markerar andra namn och klickar på knappen så kopieras även där det första namnet.

Hur skriver man för att alla makerade namn skall kopieras över?

Medlem sedan dec. 19996 522 inlägg
#2

du får loopa igenom listboxens items, kolla om de är selected, isåfall kopiera över dem

Medlem sedan mars 20048 inlägg
#3

Kan någon hjälpa mig med att göra en fungerande loop för det. Får inte det att fungera.
Har provat med:
if (SpelarVal.SelectedItem.Selected);

    {
        SpelareValda.Items.Add(new ListItem(SpelarVal.SelectedItem.ToString()));
     }

Men får samma resultat

Medlem sedan dec. 19996 721 inlägg
#4

Läs vad erka skrev, med betoning på ordet "loopa".

Medlem sedan dec. 19996 522 inlägg
#5

Du kan loopa med en foreach exempelvis

foreach (ListItem li in SpelarVal)
{
            if (li.Selected)
                SpelareValda.Items.Add(new ListItem(SpelarVal.SelectedItem.ToString()));

}
Medlem sedan mars 20048 inlägg
#6

foreach statement cannot operate on variables of type 'System.Web.UI.WebControls.ListBox' because 'System.Web.UI.WebControls.ListBox' does not contain a public definition for 'GetEnumerator'

Sorry!

Medlem sedan dec. 19996 522 inlägg
#7
   for (int i = 0; i < ListBox1.Items.Count; i++)
        {
            ListItem item = ListBox1.Items[i];
            if (item.Selected)
            {     
                item.Selected = false;
                ListBox2.Items.Add(item);              
            }

        }

Du får lägga till en koll så att man inte kan lägga in ett item 2 ggr i listbox2

Medlem sedan mars 20048 inlägg
#8

Tack nu fungerar det.
Att det ibland ska vara så svårt att få till det.

Hittar du en lösning på hur man sedan i ListBox2 kan flytta upp restp flytta ner en selectad rad?

Medlem sedan dec. 19996 522 inlägg
#9

Ja det kan du göra genom javascript eller en postback, via postback kan du göra så här

System.Web.UI.WebControls.ListItem item = box.SelectedItem;
			if (item != null)
			{
				int index = box.Items.IndexOf(item);
				if (index != 0)			
				{
					box.Items.Insert(box.SelectedIndex+1,box.Items[box.SelectedIndex-1]);
					box.Items.RemoveAt(box.SelectedIndex-1);
				}
		}

eller

System.Web.UI.WebControls.ListItem item = box.SelectedItem;
			if (item != null)
			{
				int index = box.Items.IndexOf(item);
				

				if (index < box.Items.Count -1)			
				{
					box.Items.Insert(box.SelectedIndex,box.Items[box.SelectedIndex + 1]);
					box.Items.RemoveAt(box.SelectedIndex+1);
				}
			}

kopplat till två knappar då

Medlem sedan mars 20048 inlägg
#10

Jo det fixade jag du är en klippa, men får ett error när jag försöker att flytta ner den första raden.

System.ArgumentOutOfRangeException was unhandled by user code
Message="Insertion index was out of range. Must be non-negative and less than or equal to size.\r\nParameter name: index"
Source="mscorlib"
ParamName="index"
StackTrace:
at System.Collections.ArrayList.Insert(Int32 index, Object value)
at System.Web.UI.WebControls.ListItemCollection.Insert(Int32 index, ListItem item)

Gert

259 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)