4

我在 c# 中为 sharepoint 创建了一个 webpart。它基本上是一个带有文本框、文字、验证器和按钮的表单。

我不确定如何渲染此表单以使其看起来很漂亮。布局等完全在这个 c# 类中完成。

目前开始我只是覆盖CreateChildControls()方法并使用类似的东西添加每个表单控件:this.Controls.Add(submitButton);

关于如何最好地布局此表格的任何想法?

谢谢。

4

5 回答 5

3

创建自定义 Web 部件时,我也更喜欢通过重写CreateChildControls()Render()方法来实现它们。在Render()方法中,我可以完全控制 html 输出,并且可以通过调用this.someInnerControl.RenderControl(writer)来呈现我的内部控件。

完全控制 html 输出还可以轻松地使用 CSS 设置 html 样式。正如其他人建议的那样,使用外部 CSS 文件并将样式应用于html 元素上的class属性或ASP.NET Web 控件上的CssClass属性。

当我实现不需要特殊品牌的 webpart 时,我更喜欢重用 SharePoint 定义的 CSS 类。这将确保我的 Web 部件在视觉上与 SharePoint 提供的 Web 部件相似,并且我保持一致的外观和感觉。

使用 SharePoint 定义的 CSS 样式时,您应该注意您的 html 输出。一些 CSS 类需要特定的 html 结构才能正确呈现。您始终可以使用浏览器“查看源代码”来检查您尝试模仿的 SharePoint 元素的 html。

于 2009-03-06T00:22:08.903 回答
1

我建议从现有的共享点页面获取源代码并使用共享点定义的样式。 这个 2003 年风格的链接很旧,但仍然是一个很好的入门指南。大多数 CSS 类名没有改变。

于 2009-03-03T14:45:58.400 回答
0

在我的 Web 部件中,我在解决方案中包含 css 文件,并使用以下内容将它们注入页面:

this.Page.Header.RegisterCss("/_layouts/path/to/css/file.css", false);
于 2009-03-03T14:49:35.927 回答
0

您可以覆盖 RenderContents(...) 方法以手动呈现 HTML 以任何您想要的方式。这包括添加您想要/使用的任何 css 包含、脚本包含等。

您可以将子控件呈现为字符串,然后也将它们输出,但您可能不应该调用 base.RenderContents(...) 方法。

只要确保你不要忘记渲染你的子控件。

于 2009-03-03T15:36:00.200 回答
0

如果在设计时看到对您很重要,请使用将用户控件嵌入到 Web 部件中的SmartPart 。(如果您不知道,可以使用 Visual Studio 中的工具设计用户控件。)

如果您更喜欢手动编码,那么您就在正确的轨道上。只需在CreateChildControls()方法中为您的控件创建和设置初始属性,然后像以前一样使用this.Controls.Add()

在这两种情况下,尽可能使用 CssClass 属性,这样您就可以修改 CSS 文件的外观,而无需重新编译。您可以对 CSS 类名称进行硬编码,但最好使用 Web 部件属性或外部配置源来存储这些名称。在您的母版页中引用 CSS 文件,或使用此答案中提到的其他技术将其注入页面。

MSDN 文章Windows SharePoint Services 中的 Web 部件创建基本 Web 部件也可能有所帮助。

于 2009-03-03T16:52:50.967 回答