2013-05-16 2 views
0

렌더링되지 I는이 HTML단순한 시각적는 WebPart, 컨트롤

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="LinkButton.ascx.cs" Inherits="xx.xxxxDMS.WebParts.VisualWebParts.LinkButton.LinkButton" %> 
<script type="text/javascript"> 
    function OpenModalPopup(pageUrl) { 
     var options = { url: pageUrl, width: 900, height: 300 }; 
     SP.SOD.execute('sp.ui.dialog.js', 'SP.UI.ModalDialog.showModalDialog', options); 
    } 
</script> 
<asp:LinkButton ID="LnkButton" runat="server"></asp:LinkButton> 

으로 단순한 시각적는 WebPart 만든 뒤에 코드에서 I 3 개 속성을 추가했다. 텍스트 링크와 URL을 사용하여 속성을 편집 한 후에는 LinkButton이 렌더링되지 않습니다. 내가 놓친 게 있니? 주의하시기 바랍니다 자사의 SP 2013

나는이 솔루션을 시도 거라고 : http://www.tfsconsulting.com.au/visual-studio-2012-sharepoint-2013-visual-web-part-project-template-is-buggy/

을하지만 컨트롤 템플릿 폴더 내 customwebpart에 대한 ASCX 파일이없는 것으로 나타났습니다, 그래서이 2013 년 변경 추측?

using System; 
using System.ComponentModel; 
using System.Web.UI.WebControls.WebParts; 

namespace xx.SP.xx.WebParts.VisualWebParts.LinkButton 
{ 
    [ToolboxItemAttribute(false)] 
    public partial class LinkButton : WebPart 
    { 
     private string _LinkText; 
     private Uri _Link; 
     private Boolean _OpenModal;  

     [WebBrowsable(true), WebDisplayName("LinkText"), WebDescription("Text for the link"), 
     Personalizable(PersonalizationScope.Shared), Category("xx - xx"), 
     System.ComponentModel.DefaultValue("")] 
     public string LinkText 
     { 
      get { return _LinkText; } 
      set { _LinkText = value; } 
     } 

     [WebBrowsable(true), WebDisplayName("Link"), WebDescription("Link"), 
     Personalizable(PersonalizationScope.Shared), Category("xx- xx"), 
     System.ComponentModel.DefaultValue("")] 
     public Uri Link 
     { 
      get { return _Link; } 
      set { _Link = value; } 
     } 

     [WebBrowsable(true), WebDisplayName("OpenModal"), WebDescription("OpenModal"), 
     Personalizable(PersonalizationScope.Shared), Category("xx- xx"), 
     System.ComponentModel.DefaultValue("")] 
     public Boolean OpenModal 
     { 
      get { return _OpenModal; } 
      set { _OpenModal = value; } 
     } 

     // Uncomment the following SecurityPermission attribute only when doing Performance Profiling on a farm solution 
     // using the Instrumentation method, and then remove the SecurityPermission attribute when the code is ready 
     // for production. Because the SecurityPermission attribute bypasses the security check for callers of 
     // your constructor, it's not recommended for production purposes. 
     // [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Assert, UnmanagedCode = true)] 
     public LinkButton() 
     { 
     } 

     protected override void OnInit(EventArgs e) 
     { 
      base.OnInit(e); 
      InitializeControl(); 
     } 

     protected void Page_Load(object sender, EventArgs e) 
     { 
     } 

     protected override void CreateChildControls() 
     { 
      if (LnkButton != null) 
      { 
       LnkButton.Text = LinkText; 
       if (OpenModal) 
       { 
        LnkButton.Attributes.Add("onclick", "OpenModalPopup('" + Link.ToString() + "');"); 
       } 
       else 
       { 
        LnkButton.PostBackUrl = Link.ToString(); 
       } 
      }   
     } 
    } 
} 
+0

기본값을 사용하여 해당 값을 초기화하는 것으로 시작하십시오. - 작동합니까? 그런 다음 구성 또는 링크 버튼이 작동하지 않는지 여부를 판별 할 수 있습니다. – Ian

답변

1

Sharepoint 2013 webparts는 다르게 작동합니다. 컨트롤 템플릿을 사용하여 컨트롤을 찾을 필요가 없습니다. 코드를 CreateChildControls에서 페이지로드로 옮기면 문제없이 작동합니다.