I have a very basic custom edit form, an aspx with code behind. It is a direct copy of the standard edit form with some additional javascripts.
I opened it up with designer(urgh) and copied it straight off. Problem is that the ListFormWebPart needs the list id, which i’m trying to fetch without any luck.
It won’t let me debug and i’m basically wondering if i’m totally off and should approach this differently or am i missing something critical?
<WebPartPages:WebPartZone runat="server" FrameType="None" ID="Main" Title="loc:Main"><ZoneTemplate>
<WebPartPages:ListFormWebPart ID="ListFormWebPart" runat="server" __MarkupType="xmlmarkup" WebPart="true" __WebPartId="{B1433CAB-755A-4E8C-A35E-629AD2C5BB67}" >
<WebPart xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/WebPart/v2">
<Title>Dokument</Title>
<FrameType>Default</FrameType>
<Description />
<IsIncluded>true</IsIncluded>
<PartOrder>2</PartOrder>
<FrameState>Normal</FrameState>
<Height />
<Width />
<AllowRemove>true</AllowRemove>
<AllowZoneChange>true</AllowZoneChange>
<AllowMinimize>true</AllowMinimize>
<AllowConnect>true</AllowConnect>
<AllowEdit>true</AllowEdit>
<AllowHide>true</AllowHide>
<IsVisible>true</IsVisible>
<DetailLink />
<HelpLink />
<HelpMode>Modeless</HelpMode>
<Dir>Default</Dir>
<PartImageSmall />
<MissingAssembly>Cannot import this Web Part.</MissingAssembly>
<PartImageLarge />
<IsIncludedFilter />
<ExportControlledProperties>true</ExportControlledProperties>
<ConnectionID>00000000-0000-0000-0000-000000000000</ConnectionID>
<ID>g_b1433cab_755a_4e8c_a35e_629ad2c5bb67</ID>
<ListName xmlns="http://schemas.microsoft.com/WebPart/v2/ListForm"> <%=ListId%> </ListName>
<ListId xmlns="http://schemas.microsoft.com/WebPart/v2/ListForm"> <%=ListId%> </ListId>
<PageType xmlns="http://schemas.microsoft.com/WebPart/v2/ListForm">PAGE_EDITFORM</PageType>
<FormType xmlns="http://schemas.microsoft.com/WebPart/v2/ListForm">6</FormType>
<ControlMode xmlns="http://schemas.microsoft.com/WebPart/v2/ListForm">Edit</ControlMode>
<ViewFlag xmlns="http://schemas.microsoft.com/WebPart/v2/ListForm">1048576</ViewFlag>
<ViewFlags xmlns="http://schemas.microsoft.com/WebPart/v2/ListForm">Default</ViewFlags>
<ListItemId xmlns="http://schemas.microsoft.com/WebPart/v2/ListForm">0</ListItemId>
</WebPart>
</WebPartPages:ListFormWebPart>
</ZoneTemplate></WebPartPages:WebPartZone>
And here is the small code behind:
public partial class RKEditForm : LayoutsPageBase
{
public string ListId { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
Debugger.Launch();
ListId = Request.QueryString["List"];
if (string.IsNullOrEmpty(ListId))
{
ListId = "123";
}
}
}
and this is the request that sharepoint sends: (picked up in uls)
Name=Request (GET:http://rkdhs-a:80/_layouts/RK.Dhs/RKEditForm.aspx?List=12cfe831%2D9c9d%2D4393%2D85dc%2Dd522440035ca&ID=4&Source=http%3A%2F%2Frkdhs%2Da%2FDokument%2FForms%2FAllItems%2Easpx&RootFolder=%2FDokument&ContentTypeId=0x01010053E1D612BA3F4E21AA250ECD751942B3004C051FA1C7EDB047A5DE0AABD0672600&IsDlg=1)
and i keep getting this exception:
System.FormatException: Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
at System.Guid..ctor(String g)
at Microsoft.SharePoint.WebPartPages.ListFormWebPart.get_ItemContext()
at Microsoft.SharePoint.WebPartPages.ListFormWebPart.EnsureList()
at Microsoft.SharePoint.WebPartPages.ListFormWebPart.EnsureListAndForm()
at Microsoft.SharePoint.WebPartPages.ListFormWebPart.UseLegacyForm()
at Microsoft.SharePoint.WebPartPages.ListFormWebPart.CreateChildControls()
at System.Web.UI.Control.EnsureChildControls()
at System.Web.UI.WebControls.WebParts.Part.get_Controls()
at System.Web.UI.Control.SetRenderMethodDelegate(RenderMethod renderMethod)
at ASP._layouts_rk_dhs_rkeditform_aspx.__BuildControlListFormWebPart()
at ASP._layouts_rk_dhs_rkeditform_aspx.__BuildControl__control24(Control __ctrl)
at System.Web.UI.WebControls.WebParts.WebPartZone.GetInitialWebParts()
at System.Web.UI.WebControls.WebParts.WebPartManager.RegisterZone(WebZone zone)
at System.Web.UI.WebControls.WebParts.WebPartZone.OnInit(EventArgs e)
at Microsoft.SharePoint.WebPartPages.WebPartZone.OnInit(EventArgs e)
at System.Web.UI.Control.InitRecursive(Control namingContainer)
at System.Web.UI.Control.InitRecursive(Control namingContainer)
at System.Web.UI.Control.InitRecursive(Control namingContainer)
at System.Web.UI.Control.InitRecursive(Control namingContainer)
at System.Web.UI.Control.InitRecursive(Control namingContainer)
at System.Web.UI.Control.InitRecursive(Control namingContainer)
at System.Web.UI.Control.InitRecursive(Control namingContainer)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Solved it with alot of trials some elbow grease and after luckily stumbling across this site:
http://blogs.sharepointdam.com/jen/archive/2009/10/12/custom-list-forms-with-code-behind.aspx
Basically added OnInit=”Lfwp_OnInit” to the webpart definition, removed
removed these:
and added this to my code-behind:
Jen(the blog i posted) described the issue and sol well with:
I did manage to set the ListID inside the aspx using the following line, but the ListName wouldn’t work.. tried all sorts of castings, converts and tricks but with no success so in the end i settled for the code-behind solution.