Sharepoint web部件呈现html和控件
我有一个Web部件,它在RenderWebPart方法中显示HTML输出,并在CreateChildControls中创建控件。这两个方法都在Web部件中声明为重写 我的问题是如何控制控件和html输出的显示顺序 此时,我在RenderWebPart方法中调用EnsureChildControls(),以确保创建CreateChildControls中的所有控件,然后呈现html输出Sharepoint web部件呈现html和控件,sharepoint,sharepoint-2007,web-parts,Sharepoint,Sharepoint 2007,Web Parts,我有一个Web部件,它在RenderWebPart方法中显示HTML输出,并在CreateChildControls中创建控件。这两个方法都在Web部件中声明为重写 我的问题是如何控制控件和html输出的显示顺序 此时,我在RenderWebPart方法中调用EnsureChildControls(),以确保创建CreateChildControls中的所有控件,然后呈现html输出 如果我想在页面上显示一个控件,然后是html输出,然后再按该顺序显示下面的另一个控件,该怎么办?我建议将所有静态
如果我想在页面上显示一个控件,然后是html输出,然后再按该顺序显示下面的另一个控件,该怎么办?我建议将所有静态html从呈现函数移到CreateChildControls函数中。如果需要,可以使用
Label
s、WebControl
s或更好的方法添加常规的旧HTML<代码>文字控件s。然后您可以将它们添加到控件集合中
示例:
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);
WebControl容器=新的WebControl(System.Web.UI.htmltextwittertag.Div);
StringBuilder sb=新的StringBuilder();
某人加上(“”);
foreach(此.Children中的节点子节点)
{
sb.附录格式(“”,url,名称);
}
某人追加(“
”);
LiteralControl l=新的LiteralControl();
l、 Text=sb.ToString();
容器。控件。添加(l);
我建议将所有静态HTML从渲染函数移出,并移到CreateChildControls函数中。如果需要,可以使用Label
s、WebControl
s或更好的方法添加常规的旧HTML<代码>文字控件s。然后您可以将它们添加到控件集合中
示例:
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);
WebControl容器=新的WebControl(System.Web.UI.htmltextwittertag.Div);
StringBuilder sb=新的StringBuilder();
某人加上(“”);
foreach(此.Children中的节点子节点)
{
sb.附录格式(“”,url,名称);
}
某人追加(“
”);
LiteralControl l=新的LiteralControl();
l、 Text=sb.ToString();
容器。控件。添加(l);
事实上,我对SharePoint还比较陌生,一开始我非常惊讶,一个人必须手动创建单独的控件,而没有像任何普通ASP.NET web开发那样的GUI界面。然而,我有一个非常好的提示,允许我仍然使用GUI界面,并使用它为Sharepoint创建Web部件。它涉及到在webparts中包装WebUserControl
我使用的链接如下:
基本上,您可以在网站中创建WebUserControls(.ascx文件),因此您可以像任何普通的.aspx页面一样添加控件。您还可以有一个普通的代码隐藏文件(.ascx.cs)。然后将.ascx文件拖到.aspx文件上,以便它随后使用WebUserControl。当.ascx文件准备就绪并生成后,您可以将其复制到SharePoint服务器12配置单元中的Layouts目录。最好在其中创建一个子目录,以避免与其中已有的其他文件发生冲突
然后,您需要创建一个单独的类库项目,该项目将显示您的Web部件代码。然后告诉Web部件使用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部分
希望有帮助
Ash事实上,我对SharePoint还比较陌生,一开始我非常惊讶,一个人必须手动创建单独的控件,而没有像任何普通ASP.NET web开发那样的GUI界面。然而,我有一个非常好的提示,允许我仍然使用GUI界面,并使用它为Sharepoint创建Web部件。它涉及到在webparts中包装WebUserControl 我使用的链接如下: 基本上,您可以在网站中创建WebUserControls(.ascx文件),因此您可以像任何普通的.aspx页面一样添加控件。您还可以有一个普通的代码隐藏文件(.ascx.cs)。然后将.ascx文件拖到.aspx文件上,以便它随后使用WebUserControl。当.ascx文件准备就绪并生成后,您可以将其复制到SharePoint服务器12配置单元中的Layouts目录。最好在其中创建一个子目录,以避免与其中已有的其他文件发生冲突 然后,您需要创建一个单独的类库项目,该项目将显示您的Web部件代码。然后告诉Web部件使用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部分
希望有帮助
灰烬