Scenario:
List View web parts are different than other kind of Sharepoint web part in their CAML representation.
Other web parts uses AllUsersWebPart tag which allow easy access to all the properties, so setting properties is easy.
List View webparts uses View Tag to place them on the page. Now we wanted to set some
of it properties which has different values from its default settings.
Solution:
Its was not that difficult to that but finding this undocumented solution was the difficult part :-)
Below example shows how to set AllowZoneChange property to false by default.
Sample Code ( Elements.xml) :
<?xml version="1.0" encoding="utf-8"?>
<Elements Id="NewGUID" xmlns="http://schemas.microsoft.com/sharepoint/">
<Module Name="Default" Url="" Path="">
<File Url="default.aspx" NavBarHome="True">
<View List="Lists/Announcements" BaseViewID="0" WebPartZoneID="Left" WebPartOrder="1" Type="HTML">
<![CDATA[
<WebPart xmlns="http://schemas.microsoft.com/WebPart/v2">
<Assembly>Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Assembly>
<TypeName>Microsoft.SharePoint.WebPartPages.ListViewWebPart</TypeName>
<Title>Announcements</Title>
<AllowRemove>false</AllowRemove>
<AllowZoneChange>false</AllowZoneChange>
<AllowMinimize>false</AllowMinimize>
<AllowConnect>false</AllowConnect>
<AllowEdit>false</AllowEdit>
<AllowHide>false</AllowHide>
</WebPart>
]]>
</View>
</File>
</Module>
</Elements>
7 comments:
Where do you place this xml?
Sahil , this file is used in conjunction with a feature xml file . You can specify the name of manifest file as Elements.xml
Hello Sandeep
I agree with you list view web part is little bit different than other web parts
best way I find to use it, is by adding it dynamically through the code
manager = web.GetLimitedWebPartManager(pageUrl, PersonalizationScope.Shared);
LVWP = new ListViewWebPart();
LVWP.AllowZoneChange = true;
LVWP.ExportMode = WebPartExportMode.All;
by adding export all you will be able to export it then use the xml
the way you want.
Sub Teeka
Mohamed,
You are right.. but this is when you know which page webpart is there and how many webparts will be there... if you set it in CAML , users can use it on any page they want and as many instances they want.. +- side of both approaches..
Anyway, thanks for adding another dimension :)
Sandeep
Hello Sandeep,
How to show only the columns required in the list view through provisioning? Is it possible?
Hi Praveen
This is possible.
Options 1. Create a view in the list first with all the required columns and set the BaseViewID accordingly.
Options 2. Via code you can find the listview WP on the page and open the View XML via reflection and update it.
By the way , Murali said hi to you :)
Sandeep
So how do i do the same in Sharepoint 2010 ?
Post a Comment