using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
namespace RestoreForm
{
class Program
{
static void Main(string[] args)
{
string listUrl = "http://moss/Lists/Sample List";
using (SPSite site = new SPSite(listUrl))
{
using (SPWeb web = site.OpenWeb())
{
SPList list = web.GetList(listUrl);
RestoreListForm(list, PAGETYPE.PAGE_DISPLAYFORM);
//RestoreListForm(list, PAGETYPE.PAGE_EDITFORM);
//RestoreListForm(list, PAGETYPE.PAGE_NEWFORM);
}
}
Console.Write("Done.");
Console.ReadLine();
}
private static void RestoreListForm(SPList list, PAGETYPE ptype)
{
SPWeb web = list.ParentWeb;
// Create Form File
string formFilename = null;
SPControlMode formMode = SPControlMode.Invalid;
SPFileCollection files = list.RootFolder.Files;
Guid wpId = Guid.NewGuid();
CalcFormInfo(ptype, out formFilename, out formMode);
byte[] formContents = Encoding.ASCII.GetBytes(String.Format(pagecontent, list.Title, list.ID.ToString("B"), formMode, (int)ptype, wpId.ToString("B"), String.Concat("g_", wpId.ToString("D").Replace("-", "_")).ToLower()));
try
{
if (files[formFilename].Exists)
files[formFilename].Delete();
}
catch { }
SPFile formFile = files.Add(formFilename, formContents, true);
}
private static void CalcFormInfo(PAGETYPE type, out string fileName, out SPControlMode mode)
{
switch (type)
{
case PAGETYPE.PAGE_DISPLAYFORM:
fileName = "DispForm.aspx";
mode = SPControlMode.Display;
break;
case PAGETYPE.PAGE_EDITFORM:
fileName = "EditForm.aspx";
mode = SPControlMode.Edit;
break;
case PAGETYPE.PAGE_NEWFORM:
fileName = "NewForm.aspx";
mode = SPControlMode.New;
break;
default:
fileName = null;
mode = SPControlMode.Invalid;
break;
}
}
static string pagecontent =
@"<%@ Page language=""C#"" MasterPageFile=""~masterurl/default.master"" Inherits=""Microsoft.SharePoint.WebPartPages.WebPartPage,Microsoft.SharePoint,Version=12.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c"" meta:webpartpageexpansion=""full"" meta:progid=""SharePoint.WebPartPage.Document"" %>
<%@ Register Tagprefix=""SharePoint"" Namespace=""Microsoft.SharePoint.WebControls"" Assembly=""Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"" %> <%@ Register Tagprefix=""Utilities"" Namespace=""Microsoft.SharePoint.Utilities"" Assembly=""Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"" %> <%@ Import Namespace=""Microsoft.SharePoint"" %> <%@ Register Tagprefix=""WebPartPages"" Namespace=""Microsoft.SharePoint.WebPartPages"" Assembly=""Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"" %>
:
{0}Defaulttrue1NormaltruetruetruetruetruetruetrueModelessDefaultCannot import this Web Part.true00000000-0000-0000-0000-000000000000{5}{1}0{2}ListForm{3}1048576