Vítejte na blog.vyvojar.cz Přihlásit | Registrovat | Pomoc

Cvalikov blog

Čím viac viem, zisťujem čo všetko vlastne neviem
CAML vo WSS a tvorba dotazu na vyhladanie dokumentov

Podme si ukazat jedno zlepsienie pri praci s WSS 3.0 oproti starsim verziam.
Predstavte si, ze potrebujete vyhladavat obsah portalu cez viacero stranok, alebo podla vlastnych kriterii. Vo WSS 2.0 to bol vcelku problem...
Teraz pribudol novy objekt SPSiteDataQuery, ktory je presne urceny k "cross-site or cross-list search".
Dalsim objektom je SPQuery, ale ten pracuje len nad konktretnym listom, co vacsinou je nedostacujuce.

Podme si naprogramovat jednoduchu webpartu, ktora najde vsetky napr. ".docx" dokumenty na stranke a zobrazi ich v gride.
1. Zostavme si CAML dotaz. K tomuto pouzijme free nastroje, ktore to urobia za nas (napr.
U2U CAML Query Builder, Stramit SharePoint Caml Viewer)
2. Vytvorime vlastny webpartu
[Guid("bac182c8-94e0-45f1-afea-8bcea1fee58b")]
public class Caml : System.Web.UI.WebControls.WebParts.WebPart
{
      protected GridView gvResult;
      /// Tu budeme toplnat dalsie override metody
}

3. prepisme OnLoad metodu, kde prevedieme vlastne vyhladanie a naplnenie objektu DataTable
protected override void OnLoad(EventArgs e)
{
      EnsureChildControls();
      DataTable dt = null;

      SPWeb web = SPControl.GetContextWeb(Context);
      SPSiteDataQuery q = new SPSiteDataQuery();
      //Vratene polia dotazu
       q.ViewFields = "<FieldRef Name=\"Title\"/><FieldRef Name=\"Modified\"/>" +
                                  "<FieldRef Name=\"FileLeafRef\"/><FieldRef Name=\"DocIcon\"/>" +
                                  "<ListProperty Name=\"Title\" /><FieldRef Name=\"Editor\"/>" +
                                  "<FieldRef Name=\"FileRef\"/>";
      //nastavenie vyhladavania dokumentovej kniznice 
      q.Lists = "<Lists ServerTemplate=\"101\"/>";
      //Samotny dotaz, kde vyhladavame DocIcon rovna docx
      q.Query = "<Where><Eq><FieldRef Name=\"DocIcon\" />"+
                        "<Value Type=\"Computed\">docx</Value></Eq></Where>";

      //pokial potrebujeme vyhladavat rekurzivne zmenime scope vyhladavania
      //q.Webs = "<webs scope="SiteCollection">";

     
//q.Webs = "<webs scope="Recursive">";

      //DataTable vysledku + bind gridu
      dt = web.GetSiteData(q);
      if (dt != null)
      {
          gvResult.DataSource = dt;
          gvResult.DataBind();
      }
      web = null;
}

4. Render Gridu s vysledkom
protected override void CreateChildControls()
 {
            gvResult = new GridView();
            gvResult.AutoGenerateColumns = true;
            gvResult.Width = Unit.Percentage(100);
            this.Controls.Add(gvResult);
}

protected override void Render(HtmlTextWriter writer)
{
            gvResult.RenderControl(writer);
}
5. Vysledok naseho snazenia. Samozrejme parsovanie a graficku upravu uz ponecham na fantazii programatorov

6. kompletny zdojovy kod je v attachments

Hierarchicke Navigacne Menu vo WSS

Ked porovnate funkcnost navigacneho menu vo WSS a vo velkom portali (Publishing and Collaboration Portal ), zistíte ze sa lisia pomerne nepatrne, ale o to dolezitejsie.
Vo WSS mate zobrazovany len prvy level vasich stranok (Sites) pod Site Collection a ked mate hierarchicku strukturu ste na tom s navigaciu podobne ako vo verzi WSS 2.0.
Samozrejme mozte namietat, ze tu je vidno patrny pokrok, ze ten panel si mozem cez Site Settings-->Top Link Bar upravit k obrazu svojmu.

Staci ovsem urobit drobnu upravu a mame menu ako Publishing and Collaboration Portal.
Najdime si kod nasej master page (/_catalog/masterpage/default.master v definicii vasej site collection, alebo na file systeme \12\Template\Global\default.master)

< asp:SiteMapDataSource
ShowStartingNode="False"
SiteMapProvider="SPNavigationProvider"
id="topSiteMap"
runat="server"
StartingNodeUrl="sid:1002" / >

Tym ze WSS su postavene nad .NET 2.0, definicie danych providerov najdeme vo web.configu (\wss\virtual directories\vas port kde je WSS)

SPNavigationProvider a SPSiteMapProvider
<add name="SPNavigationProvider" type="Microsoft.SharePoint.Navigation.SPNavigationProvider, Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
<add name="SPSiteMapProvider" type="Microsoft.SharePoint.Navigation.SPSiteMapProvider, Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />

 

Takze teraz sa vratme spat do master stranky a zmenme kod na
<asp:SiteMapDataSource
ShowStartingNode="True"
SiteMapProvider="SPSiteMapProvider"
id="topSiteMap"
runat="server" />

Navigacne menu bude teraz pouzivat SPSiteMapProvider a bude zobrazovat subsites vo vasej kolekcii stranok.
Este na zaver sa mozte pohrat zo zobrazenim Menu (co a jak bude zobrazovat).
V master.pages control SharePoint.AspMenu a v nom napr.
StaticDisplayLevels="2"
MaximumDynamicDisplayLevels="1"


 

Zobrazenie chyb v Sharepointe

Ked nastane neocakavana chyba dostanete len strucnu hlasku "Unknown error occurred" a to sa tazko hlada...

Riesenim je trosku zmenit web.config
      - Disablovat Custom error : customErrors=off
      - Zmenit CallStack na hodnotu true

a v pripade, ze chcete debugovat je to nutne povolit
<compilation batch="true" debug="true">

SharePoint Application Templates

Tieto sablony najdete na strankach MS
http://www.microsoft.com/technet/windowsserver/sharepoint/wssapps/templates/default.mspx
Role-Based Templates for SharePoint My Sites
http://office.microsoft.com/en-us/sharepointserver/HA102147321033.aspx

Postup Instalacie
http://blogs.msdn.com/sharepoint/archive/2007/02/24/updated-installation-guide-for-the-20-server-admin-application-templates-for-wss-3-0.aspx

a na zaver ked si ich chcete len pozriet co dokazu a nie instalovat
http://demo.sharepointservers.com/default.aspx

Customizing and Branding Web Content Management-Enabled SharePoint Sites
Pre tych, ktori sa zacinaju hrat s customizaciou WSS a MOSS na MSDN je pekny 3-dielny serial, ktory Vam objasni zakladne pojmy ako napr.
Site Colums, Master Pages, CSS, Content Types, hratky s Authentkaci, Variations a v neposlednom rade workflows.

Ale viac aj s ukazkami a vysvetlenim ...

http://msdn2.microsoft.com/en-us/library/aa830818.aspx
http://msdn2.microsoft.com/en-us/library/aa830815.aspx
http://msdn2.microsoft.com/en-us/library/aa830817.aspx
http://msdn2.microsoft.com/en-us/library/aa830816.aspx
Visual Studio .NET 2005 Keyboard Shortcuts

Poznate vsetky skratky vo VS ? :)

http://www.codinghorror.com/blog/files/Visual%20Studio%20.NET%202005%20Keyboard%20Shortcuts.htm

Linky na MOSS 2007 a wss 3.0

Kedze tieto produkty este len prichadzaju ako RELEASE a kazda info je cenna, prikladam jeden pekny link na blog, kde najdete kopec uzitocnych odkazov pokope

http://www.sharepointblogs.com/mkruger/archive/2006/05/25/7570.aspx

 

Windows SharePoint Services 3.0 Tools: Visual Studio 2005 Extensions

V pondelok bol release Visual Studio 2005 Extensions for Windows SharePoint Services 3.0 (VSeWSS). 
Obsahuje napriklad:

Nove projektove sablony

  • Team Site Definition
  • Blank Site Definition
  • List Definition
  • Web Part
  • New Project Templates

    Nove projektove "Item" Sablony

  • List Definition
  • Field Control
  • Module
  • Content Type
  • Web Part
  • Nove Projektove Sablony 

    Podrobnejsi clanok o tom co to vsetko obsahuje najdete na SharePoint Solutions Blog .

     

    Nastavenie vlastnej Master Page pre vsetky stránky na WSS 3.0

    Jednou z možností a musim uznať veľmi pohodlnou ako pracovat s designom WSS 3.0 je použitie Sharepoint Designera (bývalý Front Page). Keď sa pozrieme na obrázok, vidíme že Master Pages máme uložené v katalógu a kliknutím pravého tlačitka možme danú master page priradiť ako default, alebo custom.

    Master Page

     

    Co ale robiť ked chceme nastaviť vlastnú Master Page pre všetky novo vytvorené stránky a ponechať si volnost editácie?

    • vložte novú masterpage do nasledujúceho adresára C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\GLOBAL
    • Choďte do C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\GLOBAL\XML a otvorte ONET.XML.
    • Na konci stránky nájdete nasledujúci kód:

    <Modules>
        <Module Name="DefaultMasterPage" List="116" Url="_catalogs/masterpage" RootWebOnly="FALSE">
            <File Url="MOJA.master" Type="GhostableInLibrary" IgnoreIfAlreadyExists="TRUE" />
            <File Url="default.master" Type="GhostableInLibrary" IgnoreIfAlreadyExists="TRUE" />
        </Module>
    </Modules>

    Vložili sme tam len jeden riadok s definíciou (názvom našeho suboru Masterpage) 
    Daný kód zabezpečí, že naša masterpage sa automaticky vloží do masterpage gallery, keď bude tvorená nová stránka

    Ešte urobne drobnú upravu, kedy povieme ktorá masterpage je DEFAULT.
    V riadku :
    <Configuration ID="0" Name="Default" MasterUrl="_catalogs/masterpage/MOJA.master"> a zmeňte názov súboru 

    • ONET.xml uložte a urobte IISRESET

    Vytvorte novú stránku a jeto Smile

     

     

    Pridanie metody do existujuceho DataTableAdapteru

    Predstavte si ze pomocou Designera vo Visual Studiu 2005 si vygenerujete typovy Dataset + DataTableAdapter.
    Co ale urobit, aby Vam dana BusinessEntita nevracala len DataTable (jak je default vygenerovane v metode Fill, GetData() , ale napr.DataReader?

    Staci do triedy pre Vas adapter (partial class MyTableAdapter) doplnit nasledujuci kod.

    using System;
    using System.ComponentModel;
    using System.Data.SqlClient;
    using System.Data;

    namespace MyDataAccess.MyDataSetTableAdapters
    {
       public partial class MyTableAdapter : Component
       {
          public SqlDataReader GetReader()
          {
             return Adapter.SelectCommand.ExecuteReader(
                CommandBehavior.CloseConnection);
          }
       }
    }

     

     

     

    ListControl.AppendDataBoundItems Property in ASP.NET 2.0

    Predstavte si, že potrebujete nabindovat nejaký ListControl a chcete dat na prvy riadok (Poziciu 0) užívateľovi vetičku --Vyberte Hodnotu--

    V ASP.NET 1.1, ste tuto možnost moc nemali, pretoze po bindingu sa Vám v Controle vymazali všetky položky, ktoré ste tam predtym mali. 

    Avšak v 2.0 je pre ListControl's čarovná property nazvaná AppendDataBoundItems. Keď ju nastavíte na true, poviete tým ListControlu aby NEVYMAZAL existujúce data pred bindingom.
    Prikladík Vam to asik vysvetli viac :)

    this.ddlItems.Items.Add("- Vyberte Hodnotu -");
    this.ddlItems.AppendDataBoundItems = true;
    this.ddlItems.DataSource = CreateDataSource();
    this.ddlItems.DataBind();
    this.ddlItems.DataTextField = "Meno";
    this.ddlItems.DataValueField = "ID";

     

    Visual Studio Add-Ins a SqlAssist Add-In

    Pravdepodobne ste sa uz stretli s Add-Ins do WS.
    Top 10 Add-Ins, ktore Vam ulahcia pracu najdete na
    http://msdn.microsoft.com/msdnmag/issues/05/12/VisualStudioAddins/default.aspx

    Skusim pridat do zbierky este jeden zaujimavy a tym je SqlAssist.
    Prida Intellisense do Studia pre Vase SQL dotazy.

    • Intellisense for tables, columns  and variables. works on temp tables and aliases just as well
    • Code formatting with changeable rules
    • Templates (like snippets) of SQL code with shortcut macros
    • Char completion - automatically closes '(', single quotes etc. even on selected text
    • Has an object explorer just like the SQL analyzer you know and love, complete with "Script to" ability.
    • Works in VS 2003 and VS 2005

    a Chyba uz len link
    http://www.roundpolygons.com/Home/tabid/89/Default.aspx



     

     

    Asp .NET 2.0 a MCMS (Microsoft Content Management Server )

    Stefan Goßner vydal par zaujimavych clankov o Asp .NET 2.0 a MCMS (Microsoft Content Management Server )
    Viac uz na jeho blogu 
    http://blogs.technet.com/stefan_gossner/archive/2005/11/10/414147.aspx

     

    Uvedení Microsoft Visual Studio 2005, Microsoft SQL Server 2005 a BizTalk Server 2006

    Na strankach Microsoftu sa uz oficialne mozte registrovat
    http://www.microsoft.com/cze/events/readytolaunch/default.mspx

     

    Lauch tour 2005 je pripravena!

    Slovensky launch - 22.11.2005, Bratiskava Incheba, Kapacita 600 IT Odbornikov
    Cesky Launch - 24.11.2005, Praha TopHotel, Kapacita 1200 IT Odbornikov

    Ako hviezda pride LUBOR KOLLAR 

     - Program Group Manager
     - v MS 9 rokov
     - viedol tym pre SQL 2005 engine
     - 18 rokov vyvoja db jadier (db2...)
     - a atd :)

    Lauch 2005 Agenda : Bude to nabite zaujimavymi prednaskami, ale rad by som ZDORAZNIL,
    ze na zaver bude Rockovy koncert a je sa naozaj na co tesit :)

    Na zaver par zaujimavych odkazov :
    Download Microsoft SQL Server 2005 Developer Edition - link
    Sutaz "Udelej si svuj web a vyhrak 19'' LCD monitor" - http://www.lcdzaweb.cz
    Nastroje zdarma - http://lab.msdn.microsoft.com/express/vwd
    Hotove ukazkove aplikacie - http://starterkit.aspnet.cz
    Serial clankov o ASP .NET 2.0 na zive.cz - http://www.zive.cz/h/programovani
    Webcasty - http://msdn.microsoft.cz/webcasts . Uz od 14.9.2005 tu bude kazdy tyzden ko konca kalendarneho roku jedne nova multimedialna prezentacia na temu SQL 2005 alebo VS 2005
    Diskusna skupina microsoft.public.cs.developer
    Freehosting - http://www.lcdzaweb.cz/freehosting

    Takze priatelia na zaver,vyzera to ze Uvedenie SQL /VS 2005 bude velmi zaujimava akcia a mame sa na co tesit :)

    Více článků Další stránka »
    Vyvojar.cz na prodej!