W ramach uzupełnienia teorii dotyczącej mechanizmu Web Parts, tym razem pojawi się przykład, w którym na prostej stronie osadzone kontrolki Web Parts.
W tym celu należy stworzyć prostą stronę o zawartości podobnej do:
<div style="clear:both;" id="head"> </div> <div style="width: 400px; float: left; height: auto;" id="left"> </div> <div style="width:auto ;float: left; height: auto;" id="right"> </div> <div style="clear:both;" id="footer"> </div>Teraz dodajemy najważniejszy element, czyli WebPartManager (uwaga na początku formularza, przed innymi wystąpieniami elementów związanych z WebParts)
Następnie czas na dodawanie stref do odpowiednich obszarów:
- do wszystkich oprocz lewego ("left") dodajemy WebPartZone
- do lewego ("left") dodajemy EditorZone (dodatkowo: AppearanceEditorPart, LayoutEditorPart) i CatalogZone
void Page_Init(object sender, EventArgs e) { WebPartManager _manager = WebPartManager.GetCurrentWebPartManager(Page); String browseModeName = WebPartManager.BrowseDisplayMode.Name; DropDownList1.Items.Clear(); //wypełniamy listę wyboru trybu wyswietlania na podstawie dostepnych trybow foreach (WebPartDisplayMode mode in _manager.SupportedDisplayModes) { String modeName = mode.Name; //make sure a mode is enabled before adding it. if (mode.IsEnabled(_manager)) { ListItem item = new ListItem(modeName, modeName); DropDownList1.Items.Add(item); } } //wybieramy aktualnie wybrany tryb ListItemCollection items = DropDownList1.Items; int selectedIndex = tems.IndexOf(items.FindByText(_manager.DisplayMode.Name)); DropDownList1.SelectedIndex = selectedIndex; }Wypełniamy zdarzenie on change dla DropDownList:
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { WebPartManager manager = WebPartManager.GetCurrentWebPartManager(Page); //pobieramy glowny manager WebPartDisplayMode mode = manager.SupportedDisplayModes[DropDownList1.SelectedValue]; //na podstawie wyboru na liście wybieramy tryb wyświetlania if (mode != null) manager.DisplayMode = mode; // jeżeli ustawiliśmy jakiś tryb to go wlaczamy }Teraz można pododawać kontrolki do odpowiednich stref. Można to zrobić nawet poprzez proste przeciągnięcie zwykłej kontrolki (standardowej z ASP.NET, np. Label i umieszczenie takiej kontrolki w odpowiedniej strefie.
Na końcu chciałbym dodać, że kod z przykładu dostępny jest tutaj.
zobacz cały materiał:
OdpowiedzUsuń70-562: Dostosowanie i Personalizacja Aplikacji Web [PL]