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.









Maciej_Zbrzezny on delicious.com
zobacz cały materiał:
OdpowiedzUsuń70-562: Dostosowanie i Personalizacja Aplikacji Web [PL]