将asp.net代码转换为WebPart代码问题

时间:2010-01-12 14:15:49

标签: c# .net asp.net sharepoint-2007 web-parts

我在Windows Server 2008 Enterprise中使用SharePoint Server 2007 Enterprise。我正在使用VSTS 2008 + C#+ .Net 3.5 + ASP.Net进行开发。我有以下代码在ASP.Net(aspx)中正常工作,我想在WebPart中实现相同的功能,并部署到SharePoint发布门户网站的页面。

任何想法如何实施?我的主要困惑是如何处理以下代码头部的代码?任何参考代码或文件?

这是我正在使用的aspx代码,

<!doctype html>
<html lang="en">
<head>
    <title>Test</title>
    <link type="text/css" href="tabcontrol/themes/base/ui.all.css" rel="stylesheet" />
    <script type="text/javascript" src="tabcontrol/jquery-1.3.2.js"></script>
    <script type="text/javascript">
        $(function() {
            $("#tabs").tabs();
        });
    </script>
</head>
<body>

<div class="demo">

<div id="tabs">
    <ul>
        <li><a href="#tabs-1">tab1</a></li>
        <li><a href="#tabs-2">tab2</a></li>
    </ul>
    <div id="tabs-1">
        <p>tab1 info</p>
    </div>
    <div id="tabs-2">
        <p>tab2 info</p>
    </div>
</div>

</div>

</body>
</html>
提前谢谢, 乔治

2 个答案:

答案 0 :(得分:2)

检查此链接...

http://dotnet.org.za/zlatan/archive/2007/10/12/developing-ajax-web-parts-in-sharepoint-2007.aspx

http://www.bewise.fr/article/ptc/57/WSS-V3-Use-ASP-NET-AJAX-Framework-with-WSS-30.aspx

如果您需要帮助,请告诉我我可以为您提供WebPart示例。


要包含css或js文件,您可以执行以下操作...

 protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);



            ClientScriptManager cs = Page.ClientScript;

            string includeTemplate = "<link rel='stylesheet' text='text/css' href='{0}' />";
            string includeLocation = Page.ClientScript.GetWebResourceUrl(this.GetType(), "App_Themes.MyButtons.css");
            LiteralControl include = new LiteralControl(String.Format(includeTemplate, includeLocation));
            Page.Header.Controls.Add(include);

            includeTemplate = "<link rel='stylesheet' text='text/css' href='{0}' />";
            includeLocation = Page.ClientScript.GetWebResourceUrl(this.GetType(), "App_Themes.MyMainModalDialog.css");
            include = new LiteralControl(String.Format(includeTemplate, includeLocation));
            Page.Header.Controls.Add(include);


        }

在此示例中,我动态地包含MyMainModalDialog.css和MyButtons.css

答案 1 :(得分:0)

对于CSS,您可以使用CssLinkCssRegistration

// Custom CSS (fix the URL as necessary)
Microsoft.SharePoint.WebControls.CssLink cssLink =
    new Microsoft.SharePoint.WebControls.CssLink(); 
cssLink.DefaultUrl = "/tabcontrol/themes/base/ui.all.css";
this.Page.Header.Controls.Add(cssLink);

我忘了除了ClientScriptManager或Page.Header.Controls.Add()之外还有其他方法来处理自定义javascript。有一个CustomJSUrl类,但它似乎与CssLink的工作方式不同。

另外,我认为你的格式化脚本$(function() { $("#tabs").tabs() })应该挂钩到page.load事件而不是<head>块。