SharePoint 2013/Online - zajímavé odkazy III.

Nástroje

Migrační nástroje

Utility pro SharePoint Online

 Vývoj

Microsoft Dynamics CRM - Detail opportunity

Problém

Potřebuji udělat link do vlastní emaliové notifikace s odkazem na detail konkrétní opportunity.

Řešení

V detailu opportunity je odkaz "Email a link". Kliknutím na něj dostaneme do emailu odkaz na konkrétní položku. Url vypada např. takto

http://mscrm/FIRMA/main.aspx?etc=3&extraqs=formid%3da837e4a7-01b8-4f82-a475-be9abd67e667&id={ID oportunity}&pagetype=entityrecord

Poté stačí jen dynamicky dodat ID opportunity a odkaz je kompletní.

Odkazy

SharePoint - celá cesta k dokumentu

Problém

Potřebuji v kódu pracovat s celou cestou k dokumentu v knihovně dokumentů.

Řešení

spListItem["EncodedAbsUrl"] 

ASP.NET - odeslání formáře klávesou Enter

Problém

Uživatel reklamuje, že nelze formulář odesílát tlačítkem Enter, ale pouze kliknutím na button.

Řešení

Dá se to řešit JavaScriptem, ale to nefunguje stejně ve všech prohlížečích. Zde je řešení, které se osvědčilo. Stačí formulářové prvky obalit prvkem Panel a nastavit atribut DefaultButton.

<asp:Panel ID="Panel1" runat="server" DefaultButton="btnSubmit">
    <div>
        <asp:TextBox ID="txtUserID" runat="server"/>
        <asp:TextBox ID="txtUserpwd" runat="server"/>
        <asp:Button ID="btnSubmit" runat="server" OnClick="btnSubmit _Click" Text="Submit"/>
    </div>
</asp:Panel > 

SharePoint 2013 - Features bez Scope

Problém

Na SharePointu jsem nalezl Features, které neměly žádný Scope. Nešly odstranit, jelikož k nim chyběly soubory na disku. Občas generovaly neznámé chyby.

Příklad generované chyby

Failed on try1 to load XML document at path 'C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\Template\Features\MyProject.MyFeature\feature.xml': System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\Template\Features\MyProject.MyFeature\feature.xml'.
Failed on try2 to load XML document at path 'C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\Template\Features\MyProject.MyFeature\feature.xml': System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\Template\Features\MyProject.MyFeature\feature.xml'.
 

Řešení

Našel jsem nástroj, který tyto Features identifikuje, popř. s nimi může provést i deaktivace. Jmenuje se SharePoint Feature Administration and Clean Up Tool a je volně ke stažení na CodePlex.com

Dále jsem našel článek, který popisuje jak identifikovat a smazat tyto Features pomoci Power Shellu.

Výpis samostatných features

Get-SPFeature | ? { $_.Scope -eq $null }

Odstranění samostatných features

Get-SPFeature | ? { !$_.Scope } | % { $_.Delete() }

Odkazy

Windows - GodMode

Od kolegy jsem dostal tip, jak si zpřístupnit (zjednodušit) admistraci systému v jedné složce. Zatím jsem to testoval na Windows 7, 8 a 10 a všude to funguje stejně.

Postup

  1. V průzkumíku založit nový adresář
  2. Přejmenujte jej na 
    GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}
  3. Po přejmenování se složce změní ikona a nyní je už vše dostupné

  4. Administrace bude vypadat např. takhle

Microsoft Dynamics CRM - Součet hodnot

Problém

Potřebuji sečíst hodnoty nákladový položek "Entita Opportunity Product", field "new_externinaklady".

Řešení

Lze použít JavaScript.

function updateTotalAmount() {
    if(Xrm.Page.ui.getFormType()==2){
         setTimeout(SubGridLoadWait, 1000);
    }
}

function SubGridLoadWait()
{
    var totalExternalCosts = 0;

    var gridControl = document.getElementById('opportunityproductsGrid').control;
    var ids = gridControl.get_allRecordIds();

    for (i = 0; i < ids.length; i++) {
            var cellValueExternal = gridControl.getCellValue('new_externinaklady', ids[i]);
            var nExternal = parseFloat(getCellData(cellValueExternal));
            totalExternalCosts = totalExternalCosts + nExternal;
    }
    Xrm.Page.getAttribute('new_totalextcosts').setValue(totalExternalCosts);
} 

function getCellData(value)
{
    return value.toString().replace(' Kč', '').replace(' ', '').replace(/[^0-9-,]/g, '');
}

Odkazy

Linq - stránkování

Problém

Potřebuji stránkovat data načtená z databáze.

Řešení

Je potřeba implementovat do Linq dotazu následující část kódu.

int pageNumber = 2  //číslo stránky
int pageSize = 100  //počet řádků na stránce

var custQuery =
    (from cust in db.Customers
        orderby cust.ContactName
        select cust)
    .Skip(pageNumber * pageSize).Take(pageSize );

Odkazy

  • Return Or Skip Elements in a Sequence
    https://msdn.microsoft.com/en-us/library/bb386988.aspx

Fonty

SharePoint 2013 - odkazy

O blogu

Tento blog je místem, kde sdílím své zkušenosti, části zdrojových kódů, odkazy apod. Zdroje jsou zaměřeny převážně na problematiku portálového řešení SharePoint a vývoj webů v prostředí Microsoft. Mým cílem není úplně obsahnout konkrétní řešení, ale pouze tu část, kterou potřebuji. Pokud se problematika obsáhlejší, jsou pod článkem odkazy na související informace.

O autorovi

Oldřich Zátopek
Zabývám se vývojem webových aplikací internet/intranet na Microsoft technologiích. Hlavní specializace je SharePoint. LinkedIn