Instrukcja laboratoryjna cz.2
Transkrypt
Instrukcja laboratoryjna cz.2
Synteza aplikacji biznesowych 2013/2014 Instrukcja laboratoryjna cz.2 Administracja serwisów Microsoft SharePoint Prowadzący: Tomasz Goluch Wersja: 4.1 Diagnostyka przy użyciu mechanizmu Developer Dashboard. I. Cel: uruchomienie i zapoznanie się z mechanizmem diagnozowania wydajności serwisów Sharepoint – Developer Dashboard. 1. 2. 3. 4. 5. Uruchom Visual Studio z prawami administratora. Utwórz nowy Console Application projekt (Visual C#). Ustaw projekt w trybie 64 bit (Properties → Build → Platform Target → x64). Dodaj referencję do Microsoft.SharePoint. Dodaj następujący kod: ETI 6. Uruchom debbugera: (Ctrl+F5), wynik działania probramu powinien być następujący: Programowanie własnych składników Visual Web Part z wykorzystaniem Linq to Sharepoint. II. Cel: napisanie i wdrożenie prostego składnika Web Part czytającego dane z listy i wyświetlającego je w kontrolce Data Grid 1. 2. 3. 4. 5. 1 Uruchom Visual Studio z prawami administratora. Utwórz nowy Visual Web Part projekt1. Zapamiętaj lokalny adres witryny projektu. Podaj adres witryny projektu w polu: What site do you want to use for bebbuging? Zaznacz opcję: Deploy as a farm solution. Projekt wymaga uruchomienia środowiska programistycznego z prawami administratora. Możesz zostać poproszony o restart programu. 6. W pliku: VisualWebPart1.webpart zmień tytuł i opis Web Parta: <properties> <property name="Title" type="string">Tutaj podaj tytuł</property> <property name="Description" type="string">Tutaj podaj opis</property> </properties> 7. Otwórz okno wiersza poleceń w katalogu głównym projektu2. 8. Ustaw ścieżkę dostępu do folderu zawierającego narzędzie spmetal za pomocą komendy: set path=%path%;%ProgramFiles%\common files\microsoft shared\web server extensions\15\bin3 9. W celu stworzenia odpowiednich encji wygeneruj Linq-to-SharePoint proxy kod za pomocą komendy: spmetal /web:http://domena.com4 /namespace:NazwaProjektu.VisualWebPart1 /code:SPLinq.cs 10. Dodaj do katalogu głównego projektu nowo wygenerowany plik: SPLinq.cs 2 Aby otworzyć wiersz poleceń w katalogu bieżącym należy przytrzymać klawisz Shift i kliknąć prawym przyciskiem na wolnym polu w bieżącym oknie. Następnie z menu kontekstowego należy wybrać polecenie: Open command window here. 3 Innym sposobem na dodanie ścieżki do SPMetal.exe należy kliknąć prawym przyciskiem na komputer i wybrać: Properties → Advanced System Settings → Advanced → Environment Variables → W oknie: System System variables kliknij dwukrotnie na zmiennej PATH i dołącz do jaj zawartości następującą ścieżkę: %ProgramFiles%\common files\microsoft shared\web server extensions\14\bin. 4 Tutaj podaj adres zapamiętanej wcześniej witryny lokalnej. 11. Dodaj referencję c:\program files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Linq.dll 12. Dodaj do pliku VisualWebPart1UserControl.ascx kod deklarujący kontrolkę SPGridView: <%@ Import Namespace="Microsoft.SharePoint.WebControls" %> <SharePoint:SPGridView ID="spGridView" runat="server" AutoGenerateColumns="false"> <HeaderStyle HorizontalAlign="Left" ForeColor="Navy" Font-Bold="true" /> <Columns> <SharePoint:SPBoundField DataField="Name"> </SharePoint:SPBoundField> <SharePoint:SPBoundField DataField="DocumentCreatedBy"> </SharePoint:SPBoundField> </Columns> </SharePoint:SPGridView> 13. W kodzie behind dodaj następujące przestrzenie nazw: using Microsoft.SharePoint.Linq; using Microsoft.SharePoint; using System.Linq; 14. Wewnątrz metody Page_Load kontrolki użytkownika w plikuVisualWebPart1UserControl.ascx.cs umieść następujące linie kodu: var dc = new SPLinqDataContext(SPContext.Current.Web.Url); var Documents = dc.GetList<Document>("Documents"); var docQuery = from doc in Documents where doc.Name.Contains(".pdf") select new { doc.Name, doc.DocumentCreatedBy }; spGridView.DataSource = docQuery; spGridView.DataBind(); 15. Uruchom debbugera: (F5) 16. Zaloguj się do przeglądarki z prawami administratora głównej witryny Sharepoint (login: Administrator, hasło: ETI_pg_2014). 17. Wybierz edycję witryny: settings → Edit Page → INSERT → Web Part. 5 18. Z menu Categories wybierz: Custom , a następnie z menu Parts wybierz własny projekt i dodaj do witryny przyciskiem Add. 19. Dodaj kilka dokumentów różnych typów6 do Documents i zaobserwuj zachowanie się dodanego składnika Web Part. 5 Jeżeli w menu Categories nie występuje zakładka Customs sprawdź czy we właściwości: Site URL projektu została podana poprawna ścieżka. 6 Dodaj dokumenty PDF i inne. Proszę przedstawić prowadzącemu działający program. Komunikacja pomiędzy składnikami Web Part. III. Cel: napisanie dwóch prostych składników Web Part (dostawcy i konsumenta). 1. 2. 3. 4. 5. 6. 7. Uruchom Visual Studio z prawami administratora. Utwórz nowy Empty SharePoint projekt7. Zapamiętaj lokalny adres witryny projektu. Zaznacz opcję: Deploy as a farm solution. Dodaj do projektu nowy plik interfejsu o przykładowej nazwie IProject. Zmień widoczność interfejsu na Publiczną. Wewnątrz interfejsu umieść następujące linie kodu: public interface IProject { int Id { get; } string Name { get; } } 8. Dodaj do projektu nowy składnik Web Part (Dostawca). 9. Zaimplementuj wcześniejszy interfejs w klasie nowego składnika Web Part. 10. Dodaj wewnątrz klasy nowego składnika Web Part następujące linie kodu: public DropDownList _bufor = null; int IProject.Id { get { return int.Parse(_bufor.SelectedValue); } } string IProject.Name { get { return _bufor.SelectedItem.ToString(); } } 11. Wewnątrz metody CreateChildControls dodaj następujący kod: try { _bufor = new DropDownList(); 7 Projekt wymaga uruchomienia środowiska programistycznego z prawami administratora. Możesz zostać poproszony o restart programu. Controls.Add(_bufor); using (SPSite spSite = new SPSite(SPContext.Current.Web.Url)) using (SPWeb spWeb = spSite.OpenWeb()) { SPList doclist = spWeb.Lists["Documents"]; foreach(SPListItem doc in doclist.Items) { _bufor.Items.Add(new ListItem(doc.Name, doc.ID.ToString())); } } _bufor.AutoPostBack = true; } catch (Exception ex) { this.Controls.Clear(); this.Controls.Add(new LiteralControl(ex.Message)); } 12. Poniżej metody CreateChildControls dodaj metodę NameDoesNotMatter: [ConnectionProvider("Project Name and ID")] public IProject NameDoesNotMatter() { return this; } 13. Dodaj do projektu kolejny nowy składnik Web Part (Konsument). 14. Dodaj wewnątrz klasy nowego składnika Web Part następujące linie kodu: IProject _bufor = null; Label _lbl = null; 15. Wewnątrz metody CreateChildControls dodaj następujący kod: try { _lbl = new Label(); if (_bufor != null) { if (_bufor.Id > 0) { _lbl.Text = _bufor.Name + " został zaznaczony"; } else { _lbl.Text = "Nic nie zaostało zaznaczone"; } } else { _lbl.Text = "Brak połączenia z dostawcą"; } this.Controls.Add(_lbl); } catch(Exception ex) { this.Controls.Clear(); this.Controls.Add(new LiteralControl(ex.Message)); } 16. Poniżej metody CreateChildControls dodaj metodę ThisNameDoesNotMatter: [ConnectionConsumer("Project Name and ID")] public void ThisNameDoesNotMatter(IProject providerInterface) { _bufor = providerInterface; } 17. Uruchom debbugera: (F5) 18. Zaloguj się do przeglądarki z prawami administratora głównej witryny Sharepoint (login: Administrator, hasło: ETI_pg_2014). 19. Wybierz: PAGE → View All Pages. 20. Wybierz: FILES → New Document → Web Part Page. 21. Wymyśl i podaj nazwę strony. 22. Wybierz szablon układu: Full Page, Vertical. 23. Wybierz: Create. 24. Kliknij na strefie składnika Web Part (pole z napisem: Add a Web Part). 25. Z menu Categories wybierz: Custom, a następnie z menu Web Parts wybierz projekt (Konsument) i dodaj do witryny przyciskiem Dodaj. 26. Kliknij na strefie składnika Web Part (pole z napisem: Add a Web Part). 27. Z menu Kategorie wybierz: Custom, a następnie z menu Web Parts wybierz projekt (Dostawca) i dodaj do witryny przyciskiem Add. 28. Kliknij na oknie combo składnika Web Part (Dostawca) i wybierz: Connections → Send Project Name and ID to → Konsument8. 29. Wybierz: Site → Stop Editing. 30. Przejdź do głównej strony: Home (Witryna najwyższego poziomu). 31. W oknie combo producenta wybierz jedną z dostępnych pozycji. 32. Wybrana opcja powinna zostać wyświetlona w oknie konsumenta. Proszę przedstawić prowadzącemu działający program. IV. Programowanie składnika Web Part z użyciem kontrolek SharePoint. Cel: Zaprogramowanie składnika Web Part z użyciem kontrolek SharePoint w celu wyświetlenia informacji z witryny SharePoint. Utworzenie niestandardowego składnika XSLTListWebPart w programie SharePoint Designer. 1. 2. 3. 4. Uruchom Visual Studio z prawami administratora. Utwórz nowy Visual Web Part projekt9. Zapamiętaj lokalny adres witryny projektu. Zaznacz opcję: Deploy as a farm solution. 5. W pliku: VisualWebPart1.webpart podaj tytuł i opis Web Parta: <properties> <property name="Title" type="string">Tutaj podaj tytuł</property> <property name="Description" type="string">Tutaj podaj opis</property> </properties> 6. Dodaj do pliku VisualWebPartUserControl.ascx następujący kod: <SharePoint:ListViewByQuery runat="server" ID="ProjectListView" /> <br /> <asp:Label ID="Label1" runat="server" Text="Zadania rozpoczęte przed:" /> <SharePoint:DateTimeControl ID="DueDate" AutoPostBack="true" OnDateChanged="OnDate_Changed" DateOnly="true" runat="server"> </SharePoint:DateTimeControl> 7. W kodzie behind dodaj następujące przestrzenie nazw: using Microsoft.SharePoint; using Microsoft.SharePoint.Utilities; using System.Web; 8 Tutaj powinna się wyświetlić nazwa składnika Web Part konsumenta. Projekt wymaga uruchomienia środowiska programistycznego z prawami administratora. Możesz zostać poproszony o restart programu. 9 8. Wewnątrz metody Page_Load umieść następujące linie kodu: DateTime dueDate = DateTime.Now; if (!string.IsNullOrEmpty(Request.QueryString["date"])) { dueDate = DateTime.Parse(Request.QueryString["date"]); } DueDate.SelectedDate = dueDate; SPWeb home = SPContext.Current.Web; ProjectListView.List = home.Lists["Projects"]; SPQuery query = new SPQuery(ProjectListView.List.DefaultView); query.ViewFields = "<FieldRef Name=\"Title\" /><FieldRef Name=\"StartDate\" />"; query.Query = string.Format("<Where><Leq><FieldRef Name=\"StartDate\" />" + "<Value Type=\"DateTime\">{0}</Value></Leq></Where>" , dueDate.ToString("s")); ProjectListView.DisableFilter = true; ProjectListView.DisableSort = true; ProjectListView.Query = query; 9. Wewnątrz edytowanej klasy dodaj następująca metodę: protected void OnDate_Changed(object sender, EventArgs e) { SPUtility.Redirect(SPContext.Current.ListItem.Name , SPRedirectFlags.Default , HttpContext.Current , string.Format("date={0}", DueDate.SelectedDate.ToString("d"))); } 10. Uruchom debbugera: (F5) 11. Dodaj w Designerze listę o nazwie Projects z dwoma polami: Title (typu: Single line of text) i StartDate (typu: Date and Time). 12. Zaloguj się do przeglądarki z prawami administratora głównej witryny Sharepoint (login: Administrator, hasło: ETI_pg_2014). 13. Wybierz edycję witryny: settings → Edit Page → INSERT → Web Part. 10 14. Z menu Categories wybierz: Custom , a następnie z menu Parts wybierz własny projekt i dodaj do witryny przyciskiem Add. 15. Dodaj kilka zadań o różnej dacie rozpoczęcia do listy Projects i zaobserwuj zachowanie się dodanego składnika Web Part zmieniając datę w kalendarzu. 10 Jeżeli w menu Categories nie występuje zakładka Customs sprawdź czy we właściwości: Site URL projektu została podana poprawna ścieżka. 16. Uruchom program Microsoft SharePoint Designer 2013. 17. Wybierz: Otwórz witrynę. 18. Podaj adres witryny a następnie zaakceptuj przyciskiem Otwórz. 19. Zaloguj się do przeglądarki z prawami administratora głównej witryny Sharepoint (login: Administrator, hasło: ETI_pg_2014). 20. Wybierz: Cite Pages → Home.aspx 21. Wybierz na wstążce: Edit File → Edit File in Advanced Mode. 22. Ustaw kursor w kodzie przed znacznikiem: </Content> 23. Wybierz na wstążce: INSERT → Data View → Lists → Projects 24. Zapisz plik (Ctrl+S). 25. Dodaj kilka zadań o różnych terminach do listy Projects i zaobserwuj zachowanie się dodanego składnika Web Part. Proszę przedstawić prowadzącemu działający program.