我在c#中为sharepoint创建了一个webpart。 它基本上是一个带有文本框,文字,验证器和按钮的表单。
我不确定如何渲染此表单以使其看起来很漂亮。 布局等完全在这个c#类中完成。
目前开始我只是覆盖CreateChildControls()
方法
并使用以下内容添加每个表单控件:this.Controls.Add(submitButton);
关于如何最好地布局此表单的任何想法?
感谢。
答案 0 :(得分:3)
创建自定义webpart时,我也更喜欢通过覆盖 CreateChildControls()和 Render()方法来实现它们。在 Render()方法中,我完全控制了html输出,我可以通过调用 this.someInnerControl.RenderControl(writer)来渲染我的内部控件。
完全控制html输出也可以轻松使用CSS设置html的样式。正如其他人建议的那样,使用外部CSS文件并将styes应用于html元素上的 class 属性或ASP.NET Web控件上的 CssClass 属性。
当我实现webparts时,不需要特殊的品牌,我更喜欢重用SharePoint定义的CSS类。这将确保我的webpart在视觉上与SharePoint提供的webpart类似,并且我保持一致的外观。
使用SharePoint定义的CSS样式时,您应该知道您的html输出。某些CSS类需要特定的html结构才能正确呈现。您始终可以使用浏览器“查看源”来检查您尝试模仿的SharePoint元素的html。
答案 1 :(得分:1)
我建议从现有的sharepoint页面获取源代码并使用sharepoint定义的样式。 This link to the styles in 2003已经过时了,但仍然是一个很好的入门指南。大多数CSS类名都没有改变。
答案 2 :(得分:0)
在我的网页部分中,我在解决方案中包含css文件,并使用以下内容将其注入页面:
this.Page.Header.RegisterCss("/_layouts/path/to/css/file.css", false);
答案 3 :(得分:0)
您可以覆盖RenderContents(...)方法,以便以任何方式手动呈现HTML。这包括添加您想要/使用的任何css包括,脚本包括等。
您可以将子控件渲染为字符串然后输出它们,但您可能不应该调用base.RenderContents(...)方法。
请确保您不要忘记渲染您的孩子控件。
答案 4 :(得分:0)
如果您在设计时看到它很重要,请使用在Web部件中嵌入用户控件的SmartPart。 (如果您不知道,可以使用Visual Studio中的工具设计用户控件。)
如果您更喜欢手动编码,那么您就是在正确的轨道上。只需在CreateChildControls()方法中为控件创建和设置初始属性,然后像往常一样使用this.Controls.Add()。
在这两种情况下,尽可能使用CssClass属性,这样您就可以修改CSS文件中的外观,而无需重新编译。您可以对CSS类名称进行硬编码,但最好使用Web部件属性或外部配置源来存储这些属性。在您的母版页中引用CSS文件,或使用本答案中提到的其他技术将其注入页面。
MSDN文章Web Parts in Windows SharePoint Services或Creating a Basic Web Part也可能会有所帮助。