2011-12-14 17 views
0

SharePoint 2010で展開と折りたたみが可能なカスタマイズされたクイックランチを作成しました。問題は、サイトが読み込まれたときにクイックランチのデフォルトが拡張され、私はそれを崩壊させたいと私はそれを行う方法を知らない あなたは私を助けてくれますか?Sharepoint 2010のクイックランチカスタマイズ

最初のコードは、ユーザーコントロールのためのC#コード

using System; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using Microsoft.SharePoint; 
using Microsoft.SharePoint.Navigation; 

namespace QuickLaunchWebpart.Quicklaunch_Webpart 
{ 
public partial class Quicklaunch_WebpartUserControl : UserControl 
{ 
    private void LoadQuickLauchDesign() 
    { 
     try 
     { 
      SPSecurity.RunWithElevatedPrivileges(delegate() 
      { 

       Guid SiteID = SPContext.Current.Site.ID; 
       Guid WebID = SPContext.Current.Web.ID; 

       using (SPSite site = new SPSite(SiteID)) 
       { 
        using (SPWeb web = site.OpenWeb(WebID)) 
        { 
         SPUser oUser = SPContext.Current.Web.CurrentUser; 
         SPNavigationNodeCollection nodecoll = web.Navigation.QuickLaunch; 
         foreach (SPNavigationNode node in nodecoll) 
         { 
          TableRow tr = new TableRow(); 
          TableCell cell = new TableCell(); 
          cell.Style.Add("padding-bottom", "15px"); 

          Table innerTable = new Table(); 
          innerTable.CellPadding = 0; 
          innerTable.CellSpacing = 0; 
          // innerTable.BorderWidth = 1; 
          innerTable.Style.Add("width", "100%"); 
          TableRow innerTrTitle = new TableRow(); 
          innerTrTitle.Attributes.Add("onclick", "category_click()"); 
          TableCell innerCellTitle = new TableCell(); 
          innerCellTitle.CssClass = "category"; 

          Image img = new Image(); 
          img.ImageAlign = ImageAlign.Left; 
          img.ImageUrl = "/_layouts/images/MDNExpanded.png"; 
          Label title = new Label(); 
          title.Style.Add("font-size", "larger"); 
          title.Text = node.Title; 


          Table titleCellTable = new Table(); 
          titleCellTable.CellPadding = 0; 
          titleCellTable.CellSpacing = 0; 
          //titleCellTable.Attributes.Add("border", "1"); 
          TableRow trtitleCellTable = new TableRow(); 
          TableCell imageCell = new TableCell(); 
          TableCell titleCell = new TableCell(); 
          imageCell.Controls.Add(img); 
          titleCell.Controls.Add(title); 
          trtitleCellTable.Cells.Add(imageCell); 
          trtitleCellTable.Cells.Add(titleCell); 
          titleCellTable.Rows.Add(trtitleCellTable); 


          innerCellTitle.Controls.Add(titleCellTable); 
          innerTrTitle.Cells.Add(innerCellTitle); 
          innerTable.Rows.Add(innerTrTitle); 

          Panel div = new Panel(); 
          div.Style.Add("background-color", "#FCFCFC"); 
          //div.Style.Add("border-left", "1px solid #DBDDDE"); 
          //div.Style.Add("border-bottom", "1px solid #DBDDDE"); 
          Table childTable = new Table(); 
          childTable.CellPadding = 0; 
          childTable.CellSpacing = 0; 

          childTable.Style.Add("width", "100%"); 

          foreach (SPNavigationNode childnode in node.Children) 
          { 
           childTable.Rows.Add(ChildTableRow(childnode.Title, childnode.Url)); 
          } 
          div.Controls.Add(childTable); 

          TableRow innerTrLinks = new TableRow(); 
          innerTrLinks.Visible = true; 
          TableCell innerCellLinks = new TableCell(); 
          innerCellLinks.Style.Add("border-right", "1px solid #DBDDDE"); 
          innerCellLinks.Style.Add("padding-left", "15px"); 

          innerCellLinks.Controls.Add(div); 
          innerTrLinks.Cells.Add(innerCellLinks); 
          innerTable.Rows.Add(innerTrLinks); 

          cell.Controls.Add(innerTable); 
          tr.Cells.Add(cell); 
          tbl1.Rows.Add(tr); 
         } 
        } 
       } 
      }); 
     } 
     catch (Exception ex) 
     { 
      lblError.Text = ex.StackTrace; 
      lblError.Visible = true; 
     } 
    } 

    private TableRow ChildTableRow(string title, string Url) 
    { 
     TableRow tr = new TableRow(); 
     tr.Height = 20; 
     TableCell cell = new TableCell(); 
     HyperLink link = new HyperLink(); 
     link.Text = title; 
     link.NavigateUrl = Url; 
     link.Attributes.Add("quick_link", "true"); 
     link.Style.Add("display", "block"); 
     cell.Controls.Add(link); 
     tr.Cells.Add(cell); 

     if (Request.Url.ToString().Contains(Url) && !(Request.Url.ToString().Contains("/SitePages/Home.aspx"))) 
     { 
      tr.Attributes.Add("current", "true"); 
      link.Attributes.Add("current", "true"); 
     } 

     return tr; 
    } 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     LoadQuickLauchDesign(); 

    } 
} 
} 

次のコードのためにあるのUserControl

<script type="text/javascript"> 

function category_click() { 

    var evtSource = event.srcElement + ''; 
    var innerTblRef = null; 

    if (evtSource == '[object HTMLTableCellElement]') { 
     innerTblRef = event.srcElement.parentElement.parentElement; 
    } else if (evtSource == '[object HTMLSpanElement]' || evtSource == '[object HTMLImageElement]') { 
     innerTblRef = event.srcElement.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement; 
    } 

    //Locating the Collapse Image icon 
    var imgRef = innerTblRef.rows[0].cells[0].firstChild.rows[0].cells[0].firstChild 

    if (innerTblRef.rows[1].style.visibility == 'visible' || innerTblRef.rows[1].style.visibility == '') { 
     innerTblRef.rows[1].style.visibility = 'hidden'; 
     innerTblRef.rows[1].style.display = 'none'; 
     imgRef.src = "/_layouts/images/MDNCollapsed.png"; 
    } else { 
     innerTblRef.rows[1].style.visibility = 'visible'; 
     innerTblRef.rows[1].style.display = 'block'; 
     imgRef.src = "/_layouts/images/MDNExpanded.png"; 
    } 
} 

function link_hover() { 
    var cellRef = event.srcElement; 
    cellRef.className = "link_hover"; 

    if (cellRef + '' == '[object HTMLTableCellElement]') {  //Cell hover 
     cellRef.firstChild.className = "link_hover"; 

    } else {  // Image hover 
     cellRef.parentElement.className = "link_hover"; 
    } 
} 

function link_hout() { 
    var cellRef = event.srcElement; 
    cellRef.className = "link_hout"; 

    if (cellRef + '' == '[object HTMLTableCellElement]') {  //Cell hover 
     cellRef.firstChild.className = "link_hout"; 

    } else {  // Image hover 
     cellRef.parentElement.className = "link_hout"; 
    } 
} 

</script> 

で使用されるJavaスクリプトのためであるあなたは私

答えて

0

を助けてください可能性がI LoadQuickLauchDesignで次の行を追加して、友人の助けを借りて私の問題を解決しました

代わり

img.ImageUrl = "/_layouts/images/MDNExpanded.png"; 

とChildTableRow関数での

if(node.Children.Count>0) img.ImageUrl="/_layouts/images/MDNCollapsed.png" 
else img.ImageUrl = "/_layouts/images/MDNExpanded.png"; 

は以下 innerTrLinks.Style.Add( "表示"、 "なし")を追加します。 innerTrLinks.Style.Add( "visibility"、 "hidden"); の代わりに innerTrLinks.Visible = true; と完全に動作します