Tworzenie SharePoint application pages – część druga

utworzone przez | kwi 12, 2016 | SharePoint | 0 komentarzy

Tworzenie SharePoint application pages

Nadszedł czas na kolejny wpis z cyklu SharePoint application pages. Na koniec poprzedniego wpisu widzieliśmy, że dla nowego elementu potrzebujemy strony, która by była kontenerem dla niego. W moim przypadku to “WorkFlow01_New.aspx”. Oczywiście można sobie wyobrazić, że ten sam formularz będzie wykorzystywany do różnych zadań, ale byłoby to zbyt skomplikowane i chaotyczne. Dodajemy nową application page do naszego projektu w Visual Studio, a następnie dodajemy do modułu “PlaceHolderMain” następujące kontrolki: 5 etykiet, 4 pola tekstowe, 1 kontrolkę kalendarza oraz przycisk.

Problematyczne jest to, że przy projektowaniu stron aplikacji nie mamy dostępu do graficznego designera w Visual Studio, a więc niestety nie jesteśmy w stanie zobaczyć naszego projekt od razu, musimy używać innych narzędzi aby widzieć jak w rzeczywistości będzie wyglądała nasza strona. Poniżej moja prosta strona, jak widać nie jest to nic skomplikowanego.

[code language="csharp"]</pre>
<asp:ContentID=”PageHead”ContentPlaceHolderID=”PlaceHolderAdditionalPageHead”runat=”server”>

</asp:Content>

<asp:ContentID=”Main”ContentPlaceHolderID=”PlaceHolderMain”runat=”server”>

<tablewidth=”1000″>

<tr>

<td><asp:LabelID=”LbInvoiceNumber”runat=”server” Text=”InvoiceNumber”> </asp:Label></td>

<td><asp:LabelID=”LbInvoiceDate”runat=”server”Text=”InvoiceDate”>

</asp:Label></td>

<td><asp:LabelID=”LbInvoiceAmount”runat=”server”Text=”InvoiceAmount”>

</asp:Label></td>

<td><asp:LabelID=”LbSupplier”runat=”server”Text=”Supplier”>

</asp:Label></td>

<td><asp:LabelID=”LbPurchaseOrder”runat=”server”Text=”PurchaseOrder”>

</asp:Label></td>

</tr>

<tr>

<td><asp:TextBoxID=”InvoiceNumber”runat=”server”></asp:TextBox></td>

<td><asp:CalendarID=”InvoiceDate”runat=”server”></asp:Calendar></td>

<td><asp:TextBoxID=”InvoiceAmount”runat=”server”></asp:TextBox></td>

<td><asp:TextBoxID=”Supplier”runat=”server”></asp:TextBox></td>

<td><asp:TextBoxID=”PurchaseOrder”runat=”server”></asp:TextBox></td>

</tr>

</table>

<asp:ButtonID=”SaveToList”runat=”server”Text=”Save to list”OnClick=”SaveList”on/>

</asp:Content>

<asp:ContentID=”PageTitle”ContentPlaceHolderID=”PlaceHolderPageTitle”runat=”server”>

Application Page

</asp:Content>

<asp:ContentID=”PageTitleInTitleArea”ContentPlaceHolderID=”PlaceHolderPageTitleInTitleArea”runat=”server”>

My Application Page

</asp:Content>
<pre>
[/code]
SharePoint Application Page
SharePoint Application Page
Teraz nadszedł moment aby stworzyć metodę, która prześle zawartość naszego formularza do listy. Gdy korzystamy ze stron aplikacyjnych wszystko co się dzieje zależy od nas, a tym samym bez oprogramowania przycisku na stronie nic by się nie wydarzyło. Jak widać w kodzie strony, już umieściłem kod dla zdarzenia  OnClick w kontrolce przycisk. Kod jest następujący:
[code language="csharp"]
protectedvoid SaveList(object sender, EventArgs e)
{

SPList list = SPContext.Current.Web.Lists.TryGetList("Financial Workflow List");
SPListItem newItem = list.Items.Add();
newItem["InvoiceNr"]=InvoiceNumber.Text.ToString() ;
newItem["InvoiceDt"]=InvoiceDate.SelectedDate ;
newItem["InvoiceAm" ]=InvoiceAmount.Text ;
newItem["Supplier" ]=Supplier.Text.ToString ();
newItem["PurchaseOrder"]=PurchaseOrder.Text.ToString()  ;
newItem.Update();

HttpContext context = HttpContext.Current;
if (HttpContext.Current.Request.QueryString["IsDlg"] != null)
{
context.Response.Write("<script type=’text/javascript’>window.frameElement.commitPopup()</script>");
context.Response.Flush();
context.Response.End();
}}}
[/code]
No dobrze co takiego robimy? Pierwsza część kodu tworzy instancję naszej listy. Następnie przypisujemy odpowiednio zawartość naszych kontrolek do listy, by w końcu wywołać metodę Update() aby przesłać wszystko do listy. Na sam koniec musimy usunąć SharePoint application pages z ekranu, a jednocześnie ta ostatnia część odświeża zawartość listy. I to wszystko. Wkrótce postaram się stworzyć kolejną część serii, która będzie bazowała na SharePoint application pages i na tym co stworzyliśmy do tej pory, a doda dalsze opcje.

Written by Tomasz Szulczewski

Od ponad 25 lat w różny sposób związany z IT. Ekspert cybersecurity znany jako Cybersecurity Ninja. Certyfikowany Architekt Microsoft 365. Adwokat prywatności, niedoszły dziennikarz oraz bloger.

Related Posts

Ignite 2018

Ignite 2018

Zaczynam pisać ten post gdy Ignite 2018 powoli zbliża się do końca, więc pora rozpocząć małe podsumowanie. Rok temu, gdy pisałem o Ignite 2017 uważałem, że konferencja w wielu obszarach prezentowała rewolucyjne rozwiązania. Miałem poczucie efektu wow - może dlatego,...

czytaj dalej

0 komentarzy