使用 C# 为 sharepoint 中的 Web 部件布局表单
我已经在 C# 中为共享点创建了一个 Web 部件。 它基本上是一个带有文本框、文字、验证器和按钮的表单。
我不确定如何渲染此表单以使其看起来更漂亮。 布局等完全在这个 c# 类中完成。
目前,我只是覆盖 CreateChildControls()
方法
并使用以下内容添加每个表单控件: this.Controls.Add(submitButton);
关于如何最好地布局此表单有什么想法吗?
谢谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
创建自定义 Web 部件时,我还喜欢通过重写 CreateChildControls() 和 Render() 方法来实现它们。 在 Render() 方法中,我可以完全控制 html 输出,并且可以通过调用 this.someInnerControl.RenderControl(writer) 来渲染内部控件。
完全控制 html 输出还可以轻松使用 CSS 设置 html 样式。 正如其他人建议的那样,使用外部 CSS 文件并将样式应用到 html 元素上的 class 属性或 ASP.NET Web 控件上的 CssClass 属性。
当我实现不需要特殊品牌的 Web 部件时,我更喜欢重用 SharePoint 定义的 CSS 类。 这将确保我的 Web 部件在视觉上与 SharePoint 提供的 Web 部件相似,并且保持一致的外观和感觉。
使用 SharePoint 定义的 CSS 样式时,您应该注意 html 输出。 某些 CSS 类需要特定的 html 结构才能正确呈现。 您始终可以使用浏览器“查看源代码”来检查您尝试模仿的 SharePoint 元素的 html。
When creating custom webparts I also prefer to implement them by overriding the CreateChildControls() and Render() methods. In the Render() method I have full control of the html output and I can render my inner controls by calling this.someInnerControl.RenderControl(writer).
Having full control of the html output also makes it easy to style the html using CSS. As other people suggests, use an external CSS file and apply the styes to the class attribute on html elements or CssClass property on ASP.NET web control.
When I implement webparts, that does not require special branding, I prefer to reuse the CSS classes defined by SharePoint. This will ensure that my webpart is visually similar to the webpart provided by SharePoint and that I keep a consistent look and feel.
When using the SharePoint defined CSS styles, you should be aware of your html output. Some of the CSS classes requires a specific html structure to properly render. You can always use the browsers "View Source" to check the html of the SharePoint element you are trying to imitate.
我建议从现有的共享点页面获取源代码并使用共享点定义的样式。 这个 2003 年样式的链接已经很旧了,但仍然是一个很好的指南开始吧。 大多数 CSS 类名没有改变。
I would recommend grabbing the source from an existing sharepoint page and using the styles defined by sharepoint. This link to the styles in 2003 is old, but still a good guide to get started. Most of the CSS class names haven't changed.
在我的 Web 部件中,我在解决方案中包含 css 文件,并使用以下内容将它们注入到页面中:
In my web parts I include css files in the solution and inject them in the page using something like:
您可以重写 RenderContents(...) 方法,以您想要的任何方式手动呈现 HTML。 这包括添加您想要/使用的任何 css 包含、脚本包含等。
您可以将子控件渲染为字符串,然后也输出它们,但您可能不应该调用 base.RenderContents(...) 方法。
只要确保您不要忘记渲染您的子控件即可。
You can override the RenderContents(...) method to manually render the HTML in anyway you want to. This includes adding any css includes, scripting includes, etc. that you want/use.
You can render your child controls to strings and then output them as well, but you probably should NOT call the base.RenderContents(...) method.
Just make sure you don't forget to render your child controls.
如果您在设计时看到的内容很重要,请使用 SmartPart,它将用户控件嵌入到 Web 中部分。 (如果您不知道,可以使用 Visual Studio 中的工具设计用户控件。)
如果您喜欢手动编码,那么您就走对了路。 只需在 CreateChildControls() 方法并使用 this.Controls.Add() 就像你一样。
在这两种情况下,请尽可能使用 CssClass 属性,这样您就可以修改 CSS 文件的外观,而无需重新编译。 您可以对 CSS 类名称进行硬编码,但最好使用 Web 部件属性或外部配置源来存储这些名称。 引用母版页中的 CSS 文件,或使用本答案中提到的其他技术将其注入到页面中。
MSDN 文章Windows SharePoint Services 中的 Web 部件 或 创建基本 Web 部件可能也会有所帮助。
If it's important for you to see as you design, use the SmartPart which embeds a user control in a web part. (In case you didn't know, user controls can be designed using the tools within Visual Studio.)
If you prefer to hand-code, then you're on the right track. Simply create and set initial properties for your controls within the CreateChildControls() method and use this.Controls.Add() as you have been.
In both cases, where possible use the CssClass property so you can tinker with the look and feel in a CSS file without having to recompile. You could hard-code the CSS class names but it would be better to use the web part properties or an external config source to store these. Have a reference to the CSS file in your master page or inject it into the page using the other techniques mentioned in this answer.
The MSDN articles Web Parts in Windows SharePoint Services or Creating a Basic Web Part might also help.