Har en ListBox på min hemsida och skall plocka ut alla de items som är selected.
Då vill MS att jag skall loopa igenom alla mina items och kolla om just detta items är valt.
Om man tittar lite närmar på själv ListBoxen så ser man att det finns en intern/protected metod som heter: SelectedIndicesInternal som är en arraylist som innehåller de items som jag har valt.
Den kommer man åt jättefint i debugmode, eller i command window men jag får inte accessa den från min kod...
Men om den är protected, kan du ju ärva den till en sub-klass och därifrån göra det du vill kanske? Kanske till och med override:a den och göra den publik?
Men varför har MS inte gjort propertyn SelectedIndicesInternal tillgänglig???
Bra fråga. Eftersom System.Windows.Forms.ListBox har en SelectedItems-collection så är det ju svårt att se nån rationell förklaring till att System.Web.UI.WebControls.ListBox inte skulle ha det.
Jag hittar ingen SelectedIndicesInternal. Om den verkligen är "internal" så finns det ingen möjlighet alls att komma åt den. Antagligen för att egenskapen inte fungerar.
paraxe:
static void SetSelectedItems(ListBox list, string items)
{
foreach(string id in items.Split(new char[] {','}))
{
foreach(ListItem item2 in list.Items)
if(item2.Value == id)
{
item2.Selected = true;
break;
}
}
}
static string GetSelectedItems(ListBox list)
{
System.Text.StringBuilder text = new System.Text.StringBuilder();
foreach(ListItem item in list.Items)
{
if(item.Selected)
{
if(text.Length > 0) text.Append(',');
text.Append(item.Value);
}
}
return text.ToString();
}