我有一个webpart,它在RenderWebPart方法中显示HTML输出,并且还在CreateChildControls中创建控件,这两个方法在webpart中被声明为重写。
我的问题是如何控制控件和html输出的显示顺序?
目前我在RenderWebPart方法中调用EnsureChildControls()以确保创建CreateChildControls中的所有控件,然后然后呈现html输出。
如果我想在页面上显示一个控件然后html输出然后按照该顺序显示下面的另一个控件怎么办?
答案 0 :(得分:4)
我建议将所有静态HTML移出Render函数并移入CreateChildControls函数。如果需要,您可以使用Label
,WebControl
或更好的LiteralControl
s添加常规旧HTML。然后你可以将它们添加到Controls集合中。
示例:强>
WebControl container = new WebControl(System.Web.UI.HtmlTextWriterTag.Div);
StringBuilder sb = new StringBuilder();
sb.Append("<ul>");
foreach (Node child in this.Children)
{
sb.AppendFormat("<li><a href=\"{0}\">{1}</a></li>", url, name);
}
sb.Append("</ul>");
LiteralControl l = new LiteralControl();
l.Text = sb.ToString();
container.Controls.Add(l);
答案 1 :(得分:0)
我实际上是相对较新的SharePoint,我最初非常惊讶,必须手动创建单独的控件,没有像任何正常的ASP.NET Web开发所涉及的GUI界面。但是,我有一个非常非常好的提示,允许我仍然使用GUI界面,并使用它为Sharepoint创建webparts。它涉及将WebUserControl包装在webparts中。
我使用的链接在这里:http://www.a2zdotnet.com/View.aspx?id=95
您基本上在网站中创建WebUserControls(.ascx文件),因此您可以像任何正常的.aspx页面一样添加控件。您还可以拥有一个普通的代码隐藏文件(.ascx.cs)。然后将.ascx文件拖到.aspx文件中,以便它将使用您的WebUserControl。准备好并生成.ascx文件后,将它们复制到SharePoint Server的12-Hive中的Layouts目录。最好在那里创建一个子目录,以避免与其中的其他文件发生冲突。
然后,您需要创建一个单独的类库项目,该项目将包含您的WebPart代码。然后,告诉WebPart在layouts目录中使用.ascx文件。像这样:
protected override void CreateChildControls()
{
base.CreateChildControls();
try
{
this.Controls.Clear();
_myControl = this.Page.LoadControl("\\_layouts\\MyFolder\\WebUserControl.ascx");
this.Controls.Add(_myControl);
}
catch (Exception e)
{
err = e.Message;
}
我上面提供的链接提供了更多信息,但基本上你编译了webpart项目,然后将DLL添加到你的sharepoint服务器的 BIN 目录(c:\ inetpub \ wwwroot \ wss \ etc) )。顺便说一句,您不必将其编译为 GAC 。
然后在sharepoint服务器的web.config中添加一个条目:
<SafeControl Assembly="MyWebUserControl, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9f4da00116c38ec5" Namespace="MyWebUserControl" TypeName="*" Safe="True" />
如果你没有将DLL编译到GAC,而是 BIN ,则只需要:
<SafeControl Assembly="UserControl" Namespace="UserControl" TypeName="*" Safe="True" />
同样,我上面发布的链接将它写在代码中,这是对GUID的引用,只有在将DLL放入GAC时才需要。如果只放在BIN目录中,则不需要代码的GUID部分。
希望有所帮助。
灰