Vb.net VB中的Sharepoint表单布局

Vb.net VB中的Sharepoint表单布局,vb.net,sharepoint,Vb.net,Sharepoint,好的,我有PHP背景,但我刚刚被指派在SharePoint中开发一些自定义Web部件。我已经了解了如何在VB中创建和部署一个基本的“Hello world”web部件。好的,到目前为止 我一直坚持的是一个非常基本、愚蠢的观点——我到底该如何在VB web部件中布局呢 例如,这里有一个标签和一个文本框: protected overrides sub createchildcontrols() mybase.createchildcontrols dim mylabel as new label

好的,我有PHP背景,但我刚刚被指派在SharePoint中开发一些自定义Web部件。我已经了解了如何在VB中创建和部署一个基本的“Hello world”web部件。好的,到目前为止

我一直坚持的是一个非常基本、愚蠢的观点——我到底该如何在VB web部件中布局呢

例如,这里有一个标签和一个文本框:

protected overrides sub createchildcontrols()
mybase.createchildcontrols

dim mylabel as new label
dim mytextbox as new textbox

mylabel.text ="My label text"
mytextbox.text ="My textbox"

me.controls.add(mylabel)
me.controls.add(mytextbox)

例如,我如何让我的标签和文本框显示在不同的行上,而不是像现在这样一行接一行地运行?在PHP中,我只是将它们包装在一些顶部,然后将它们拆分到不同的行中,但在这里我该怎么做呢?

有很多方法。如果您真的希望控件显示在不同的行上,最简单的方法是添加一个ASP.net,在它们之间添加一个BR标记

除此之外,您还可以始终使用ASP.net格式化控件,例如将控件分成多个部分进行输出

此外,从WebControl派生的所有内容都有一个Attributes和CssClass属性,用于根据您可以使用的样式表设置格式

最后一种方法,也是最可定制但最难维护和更改的方法,是覆盖Web部件的呈现方法并在Web部件中完全手动生成HTML


或者,您可以完全放弃此功能,并使用开发ASP.net用户控件以在SharePoint内部使用,从而提供使用Visual Studio designer工具在表单上布局控件的选项。

您应该重写Render()方法。默认情况下,此方法仅呈现您在CreateChildControls()方法中添加的所有子控件,但是重写它可以让您在控件周围编写额外的HTML元素

我通常用C#编写代码,但我认为以下示例应该在VB中工作:

Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
  writer.Write("<h1>Custom webpart rendering</h1>")
  me.mylabel.RenderControl(writer)
  writer.Write("<br />")
  me.myTextbox.RenderControl(writer)
End Sub
protectedoverrides子呈现(ByVal writer作为System.Web.UI.htmltextwitter)
writer.Write(“自定义Web部件呈现”)
me.mylabel.RenderControl(编写器)
writer.Write(“
”) me.myTextbox.RenderControl(writer) 端接头

试试看…

我一直在使用标准的web用户控制模型为ASP.NET网站开发web部件,它允许您访问VS设计器,这意味着您的UI可以是标准的HTML。然后,ASP.NET在运行时将UserControl包装到GenericWebPart中,以在WebParts站点中承载它

我知道Sharepoint不支持这种开箱即用的模式,但我刚刚发现它可能会帮助您

智能部件(或其变体)是最简单的方法。既然可以更轻松地开发用户控件,为什么还要处理直接呈现html呢


另外,如果您不是VB方面的专家,使用Visual Studio Designer将有助于创建用户控件

我在博客中介绍了这个主题

谢谢您的回复。我选择了EvilGoatBobs解决方案作为最容易实现的解决方案


这是我第一次接触StackOverflow,您的回答让我对该网站有了很好的介绍!:)

现在,您已经通过LiteralControl选项保存了我的理智。对我来说,立即生成所需的web部件就足够了。从长远来看,由于需要构建更复杂的Web部件,我将尝试使用SmartPart选项。