VB中的Sharepoint表单布局

时间:2009-03-08 21:35:26

标签: vb.net sharepoint

好吧,我来自PHP背景,但我的任务是在SharePoint中开发一些自定义Web部件。我已经想出如何在VB中创建和部署基本的“Hello world”Web部件。好的,到目前为止。

我坚持的是一个非常基本的,愚蠢的观点 - 我该如何在VB网页部分中展示内容?

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

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)

例如,我如何让mylabel和我的文本框出现在不同的行上,而不是像现在一样一个接一个地运行?在PHP中,我只是将它们包装在一些顶部,将它们分成不同的行,但我该怎么做呢?

6 个答案:

答案 0 :(得分:2)

有很多方法可以解决这个问题。最简单的,如果你真的只想让控件出现在不同的行上,那就是在它们之间添加一个带有BR标签的ASP.net LiteralControl

除此之外,您始终可以使用ASP.net格式控件(如Table)将控件分成输出部分。

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

最后一种方法,也是最可定制的,但最难维护和更改的方法是覆盖webpart的Render方法,并在WebPart中完全手动生成HTML。

或者,您可以完全废弃此内容,并使用SmartPart开发用于SharePoint内部的ASP.net用户控件,为您提供使用Visual Studio设计器工具在窗体上布局控件的选项

答案 1 :(得分:1)

您应该覆盖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

试一试......

答案 2 :(得分:1)

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

我知道Sharepoint不支持开箱即用的这个型号,但我刚发现这可能对你有帮助......

http://weblogs.asp.net/jan/archive/2006/12/02/announcing-the-return-of-the-smartpart.aspx

答案 3 :(得分:0)

智能部件(或其变体)是最简单的方法。当你可以更容易地开发用户控件时,为什么要渲染直接html呢?

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

答案 4 :(得分:0)

我在博客上谈到了这个话题。 Easily build a rich UI for a web part without using SmartPart

答案 5 :(得分:0)

感谢所有回复。我已经使用EvilGoatBobs解决方案,因为它最容易实现。

这是我第一次使用StackOverflow,您的有用答案使其成为网站的一个非常好的介绍! :)