我在这里面临一些关于SharePoint列表新/显示/编辑表单的具体问题......
我解释说:
我已经(从Visual Studio)创建了一个基于DiscussionBoard ListTemplate的SharePoint列表。现在我想自定义该列表的NewForm和EditForm。
我走了几个方法;对于Schema.xml中的检查修改,但这仅适用于自定义列表而不适用于Sharepoint列表(那些基于模板,如讨论板),因为我只有listInstanceFile和elements.xml文件我没有schema.xml文件,用于修改。
我尝试以编程方式执行此操作,我尝试了以下操作(在映射的布局文件夹中创建应用程序页面后)
string sDirectory=Microsoft.SharePoint.Utilities.SPUtility.GetCurrentGenericSetupPath(@"TEMPLATE\LAYOUTS\TetSPCustomForms");
string newUrl = sDirectory + @"\DiscussionApplicationPage.aspx";
var form = web.GetFile(newUrl);
if (form != null && form.Exists)
{
lstTest.DefaultNewFormUrl = newUrl;
lstTest.Update();
}
这不起作用; GetFile超出了范围...
我也尝试了这个,(在创建一个应用程序页面并将其放在列表之后)
string urlNew = lstTest.DefaultNewFormUrl.Replace("NewForm.aspx", "D2appPage.aspx");
lstTest.Update();
之后我试过了,
var web = properties.Feature.Parent as SPWeb;
if (web == null) return;
SPList lstTest = web.Lists["testBoard"];
string newUrl = string.Format("{0}{1}/D2appPage.aspx",web.ServerRelativeUrl,lstTest.RootFolder.Url);
newUrl错了......
最后我试过这个
SPList myList = web.GetList(SPUrlUtility.CombineUrl(web.ServerRelativeUrl," / Lists / testBoard")); //的Rq var list = web.Lists.TryGetList(" testBoard"); var rootFolder = list.RootFolder;
var newFormUrl = string.Format("{0}", list.DefaultNewFormUrl);
var newForm = web.GetFile(newFormUrl);
if (newForm != null && newForm.Exists)
newForm.Delete(); // delete & recreate our new form
newForm = rootFolder.Files.Add(newFormUrl, SPTemplateFileType.FormPage);
var wpm = newForm.GetLimitedWebPartManager(PersonalizationScope.Shared);
var webpart = new ListFormWebPart
{
ListId = list.ID,
ListName = list.ID.ToString("B").ToUpper(),
PageType = PAGETYPE.PAGE_NEWFORM,
Title = list.Title,
Description = list.Description,
CatalogIconImageUrl = list.ImageUrl,
TitleUrl = list.DefaultViewUrl,
//TemplateName = "SomeCustomRenderingTemplate"
};
wpm.AddWebPart(webpart, "Main", 0);
没有任何改变......
我错过了什么吗?
任何帮助将不胜感激。