好吧,我来自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中,我只是将它们包装在一些顶部,将它们分成不同的行,但我该怎么做呢?
答案 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)
答案 5 :(得分:0)
感谢所有回复。我已经使用EvilGoatBobs解决方案,因为它最容易实现。
这是我第一次使用StackOverflow,您的有用答案使其成为网站的一个非常好的介绍! :)