SharePoint 2010으로 배포 후에 바로 반영이 잘되지 않죠. 그래서 일단 캐시를 지웁니다.
그래도 안될때가 있다는....헐~~

그래서 IE8의 경우 F12로 개발자 도구를 열어서 매번 아래 매뉴를 지겨우도록 클릭합니다.

캐시 - 브라우저 캐시 지우기
캐시 - 이 도메인에 대해 브라우저 캐시 지우기

그런데, 최근에...아래처럼..[항상 서버에서 새로 고침]만 선택되어져 있으면 항상 서버에서 받아온다는 것을 알았습니다. 

그래서 배포 후에 브라우저만 새로 고침만 하면 됩니다...
별거 아닌것 같지만 같은 동작을 반복적으로 하면....많이 짜증나죠...~~

그리고, 현재 작업하고 잇는 브라우저를 닫았다면 브라우저를 열때 마다 다시 설정해주야야 합니다.




VisualStudio 2010에서 Silverlight 컨트롤을 포함하는 VisualWebPart에서 실버라이트 컨트롤을 디버깅하는 방법입니다.

1. VisualStudio 2010 - debug - Attach to Process.... 메뉴를 선택합니다.

2. Attach To Process 화면에서 Select.. 을 선택해서 "Silverlight" 를 체크합니다.

3. Available Processes에서 iexplorer.exe에서 debugging Silverlight webPart.... 을 지정합니다.

4. 즐~~ 디버깅.~~~



SPTreeView 을 ascx의 비하인드(Behind) 코드의 Page_Load 이벤트에서 TreeNode만 생성하면 알아서 뿌려주겠지 생각했는데.. 왠걸 아무 반응도 없다는....

한참 해메다가...( 윈도우 어플만 5년하다가 웹을 할려니 적응 힘드네...헐)
아무튼,  ascx의 OnPreRender 을 오버라이드(override) 에서 코드를 작성하니 잘 되더군요.

OnPreRender 이벤트는 말 그대로 랜더링 되기 전에 이벤트이구요.

아래 내용은 위 내용을 찾다고 검색질 해서 퍼온 문서입니다.
원래는 
Visual Web Parts 내용을 주로 다루고 있는데, 고건 별 내용은 없구요..


Demo outline

In this demo you will go through tasks required to create a SharePoint Project Items like Web parts and Visual Web Parts using the SharePoint Tools templates.

The provided sample code is the final solution that will be created during this demo. Also, this demo project is based on the SharePoint Tools Project template demo included in this Training Kit.

Run Source\Setup\Setup.bat to create the required SharePoint site for this demo.

Steps:

1.       Open the MetroWebParts project and inspect the existing items. If required, set the Site Url property of the project in the Properties window.

2.       Add the Images SharePoint mapped folder to the project by right-clicking on the project node and selecting the Add SharePoint “Images” Mapped Folder.

a.       This will automatically create the MetroWebParts folder.

b.      Right-click on the MetroWebParts folder and select Add Existing Item and select, from the Assets folder of this demo, the FeatureIcon.gif and WebPartIcon.gif image files.

3.       Open the feature included in the Features folder by right-clicking on it and opening the Feature designer.

a.       In the Properties window, edit the image Url property and set it to MetroWebParts\FeatureIcon.gif to use the recently added image file.

4.       Add a new SharePoint Web Part by right-clicking on the project node and using the Add New item context menu.

a.       Edit the elements.xml and change the Group property of the File element to something more meaningful like “MetroWebParts”

b.      Edit the .webpart file of the Web Part and modify the Title and Description properties.

c.       Include the ChromeType, CatalogIconImageUrl and TitleIconImageUrl properties.

<property name="ChromeType" type="chrometype">TitleAndBorder</property>

<property name="CatalogIconImageUrl" type="string">_layouts/images/MetroWebParts/WebPartIcon.gif</property>

<property name="TitleIconImageUrl" type="string">_layouts/images/MetroWebParts/WebPartIcon.gif</property>

 

5.       Add a new SharePoint Visual Web Part by right-clicking on the project node and using the Add New Item context menu.

a.       Do the same as with the Web Part previously created.

·   Edit elements.xml file, edit .webpart file modifying existing properties and adding new properties

b.      Add a SharePoint TreeView to the user control included in the template. (Code Snippets at the end of the current file)

c.       Override and Implement the OnPreRender method to load the TreeView with the hierarchical virtual file system for the current site. (Code Snippets at the end of the current file)

d.      Import the Microsoft.Sharepoint namespace in the user control’s class if required.

6.       Change the Active Deployment Configuration to No Activation using the SharePoint tab in the Project properties page.

a.       Right-click the MetroWebParts project node and click Deploy. Review the Output window to see the details.

7.       Open Internet Explorer and browse to the configured SharePoint site’s home page. For example http://localhost/sites/SharePointToolsDemo

8.       Activate the feature in the Site by using the Site Settings - Site Collection Administration page in SharePoint. Deactivate the feature first if it is already activated.

9.       Using the Page ribbon in the site’s home page to use the Edit Page command and add a new web part.

a.       Select the MetroWebParts category and check the two created Web Parts are present.

b.      Add both web parts and the use the Stop Editing command to check the new site’s home page look and feel.

 

<SharePoint:SPTreeView ID="treeSiteFiles" runat="server" ImageSet="XPFileExplorer" NodeIndent="15">

  <HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" />

  <NodeStyle Font-Names="Tahoma" Font-Size="8pt" ForeColor="Black" HorizontalPadding="2px"

    NodeSpacing="0px" VerticalPadding="2px" />

  <ParentNodeStyle Font-Bold="False" />

  <SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False" HorizontalPadding="0px"

    VerticalPadding="0px" />

</SharePoint:SPTreeView>

 

C#

const string SITE_IMG = @"\_layouts\images\FPWEB16.GIF";

const string FOLDER_IMG = @"\_layouts\images\FOLDER16.GIF";

const string GHOSTED_FILE_IMG = @"\_layouts\images\NEWDOC.GIF";

const string UNGHOSTED_FILE_IMG = @"\_layouts\images\RAT16.GIF";

 

protected override void OnPreRender(EventArgs e)

{

    treeSiteFiles.Nodes.Clear();

    SPWeb site = SPContext.Current.Web;

    SPFolder rootFolder = site.RootFolder;

    TreeNode rootNode = new TreeNode(site.Url, site.Url, SITE_IMG);

    LoadFolderNodes(rootFolder, rootNode);

    treeSiteFiles.Nodes.Add(rootNode);

    treeSiteFiles.ExpandDepth = 1;

}

 

protected void LoadFolderNodes(SPFolder folder, TreeNode folderNode)

{

    foreach (SPFolder childFolder in folder.SubFolders)

    {

        TreeNode childFolderNode = new TreeNode(childFolder.Name, childFolder.Name, FOLDER_IMG);

        childFolderNode.NavigateUrl = SPContext.Current.Site.MakeFullUrl(childFolder.Url);

        LoadFolderNodes(childFolder, childFolderNode);

        folderNode.ChildNodes.Add(childFolderNode);

    }

 

    foreach (SPFile file in folder.Files)

    {

        TreeNode fileNode;

        if (file.CustomizedPageStatus == SPCustomizedPageStatus.Uncustomized)

        {

            fileNode = new TreeNode(file.Name, file.Name, GHOSTED_FILE_IMG);

        }

        else

        {

            fileNode = new TreeNode(file.Name, file.Name, UNGHOSTED_FILE_IMG);

        }

 

        fileNode.NavigateUrl = SPContext.Current.Site.MakeFullUrl(file.Url);

        folderNode.ChildNodes.Add(fileNode);

    }

}

Visual Basic

Const SITE_IMG As String = "\_layouts\images\FPWEB16.GIF"

Const FOLDER_IMG As String = "\_layouts\images\FOLDER16.GIF"

Const GHOSTED_FILE_IMG As String = "\_layouts\images\NEWDOC.GIF"

Const UNGHOSTED_FILE_IMG As String = "\_layouts\images\RAT16.GIF"

 

Protected Overrides Sub OnPreRender(ByVal e As System.EventArgs)

    treeSiteFiles.Nodes.Clear()

    Dim site = SPContext.Current.Web

    Dim rootFolder = site.RootFolder

    Dim rootNode = New TreeNode(site.Url, site.Url, SITE_IMG)

    LoadFolderNodes(rootFolder, rootNode)

    treeSiteFiles.Nodes.Add(rootNode)

    treeSiteFiles.ExpandDepth = 1

End Sub

 

Protected Sub LoadFolderNodes(ByVal folder As SPFolder, ByVal folderNode As TreeNode)

    For Each childFolder As SPFolder In folder.SubFolders

        Dim childFolderNode = New TreeNode(childFolder.Name, childFolder.Name, FOLDER_IMG)

        childFolderNode.NavigateUrl = SPContext.Current.Site.MakeFullUrl(childFolder.Url)

        LoadFolderNodes(childFolder, childFolderNode)

        folderNode.ChildNodes.Add(childFolderNode)

    Next

 

    For Each file As SPFile In folder.Files

        Dim fileNode As TreeNode

        If (file.CustomizedPageStatus = SPCustomizedPageStatus.Uncustomized) Then

            fileNode = New TreeNode(file.Name, file.Name, GHOSTED_FILE_IMG)

        Else

            fileNode = New TreeNode(file.Name, file.Name, UNGHOSTED_FILE_IMG)

        End If

 

        fileNode.NavigateUrl = SPContext.Current.Site.MakeFullUrl(file.Url)

        folderNode.ChildNodes.Add(fileNode)

    Next

End Sub

 




1. Field 재정의 및 재지정

필요에 따라서 기존 필드를 사용하거나, 기존의 필드 타입을 재정의할 수 있다.

<Fields>

<Field ID="{7662cd2c-f069-4dba-9e35-082cf976e170}" Type="Note" RichText="TRUE" RichTextMode="FullHtml" IsolateStyles="TRUE" NumLines="15" Name="Body" DisplayName="$Resources:core,camlid2;" Sortable="FALSE" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="Body" >
</Field>

이미 정의되어 있는 Note라는 필드타입으로 "Body"라는 필드를 생성한다. 새로 생성한 것이므로 ID는 새로운 Guid을 부여한다.  


<Field ID="{8DFFC782-F4E8-44E9-8777-25ECDC3DF816}" Type="Custom001FieldType" Name="Custom001Field" StaticName="Custom001Field"DisplayName="사용자 필드001" SourceID="http://schemas.microsoft.com/sharepoint/v3" Description="" Group="EPIENCE" >
</Field

Custom001FieldType 라는 필드타입을 정의하고, 타입으로 새로운 필드 Custom001Field 생성한다. 참조 : Custom Field 만들기 참조

</Fields>

차이점은 전자는 기존의 필드타입(Sharepoint 2010 에서 제공하는) 으로 필드를 생성하는 것이고, 
후자는 새 필드타입(Field Type)을 정의해서 필드를 생성하는 것이다.

2.필드 참조 및 사용

이제 사용할 필드을 앞 단계에서 생성해으니, 실제 리스트에서 필드를 사용할 수 있게 정의(참조) 해주어야 한다. 리스트는 ContentType을 정의해서 사용할 필드를 지정하므로 ContentType Tag 부분에서 설정한다.
여기서 정의한 필드는 양식(Forms tag)에서 정의한 aspx 페이지에서 필드값을 표시/저장/편집할 수 있다.


<ContentType ID="0x01040094203F6B465E4fb2AF061B6CB96B3DDB" Group="EPIENCE" Name="EPIENCE_BOARD" Sealed="FALSE" Version="0"> 

<FieldRefs>

<FieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" Name="Title" DisplayName="제목"/>
☞ ContentType을 이미 정의된 ContentType에서 상속받은 경우 부모의 필드를 그대로 사용한다.     (샘플은 공지사항을 이어받은 것임.)

<FieldRef ID="{8DFFC782-F4E8-44E9-8777-25ECDC3DF816}" Name="Custom001Field" DisplayName="사용자필드001" /> 
☞ Custom Field 사용.

</FieldRefs>

</ContentType>

3. View에서의 표시할 필드(Field) 표시

뷰에 표시할 필드을 FieldRef Tag로 지정한다.

<
Views>

……

<View BaseViewID="1" Type="HTML" WebPartZoneID="Main" DisplayName="$Resources:core,objectiv_schema_mwsidcamlidC24;" DefaultView="TRUE" MobileView="TRUE" MobileDefaultView="TRUE" SetupPath="pages\viewpage.aspx" ImageUrl="/_layouts/images/generic.png" Url="AllItems.aspx">

<ViewFields>

<FieldRef Name="LinkTitle"> </FieldRef> <!-- 공지 사항 ContentType에서 정의된 필드 연결 -->
<FieldRef Name="Attachments"></FieldRef>
<FieldRef Name="Custom001Field"></FieldRef>
☞ 뷰에서 보여줄 필드 연결

</ViewFields>

</View>
……

</Views>