You can check this in msdn. However DisableEventFiring()/EnableEventFiring() still works as per Reflector.
Recommended way now is to use new property EventFiringEnabled. This gives us an option to check current status and save it. I found a great post from Adrian Henke and modified his code using this new feature.
The class DisabledItemEventsScope disable/enable event firing for the current thread and could be used in that manner at any place including code behind for the page or web part
BTW: There are couple useful SPList extensions to manage SPListItemEventReceiver collection
Thursday, October 21, 2010
Monday, October 11, 2010
SPUrl for WSS 3.0 or SharePoint Foundation
No, expression like <% $SPUrl:~sitecollection/Style Library/mystyles.css %> doesn't work for WSS or SharePoint Foundation. This is part of Publishing Infrastructure and you have to buy MOSS or SharePoint Server license to get it.
So, let's create our own ExpressionBuilder. I didn't implement 'language' support - obviously I need just Site and SiteCollection.
You need to put this class to some assembly and register it with your prefix(e.g. WSSUrl) in Web.Config
Assembly Name should be fully qualified if you put the assembly into GAC.
So, let's create our own ExpressionBuilder. I didn't implement 'language' support - obviously I need just Site and SiteCollection.
...
using System.Web.Compilation;
using Microsoft.SharePoint;
...
public class WSSUrlExpressionBuilder : ExpressionBuilder
{
public override CodeExpression GetCodeExpression
(System.Web.UI.BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context)
{
CodeTypeReferenceExpression thisType = new CodeTypeReferenceExpression(base.GetType());
CodePrimitiveExpression expression = new CodePrimitiveExpression(entry.Expression.Trim().ToString());
string evaluationMethod = "GetKeyValue";
return new CodeMethodInvokeExpression(thisType, evaluationMethod, new CodeExpression[] { expression });
}
public static object GetKeyValue(string expression)
{
SPWeb web = SPContext.Current.Web;
string key = "~SiteCollection";
if (expression.IndexOf(key, StringComparison.InvariantCultureIgnoreCase) == 0)
return web.Site.Url+expression.Substring(key.Length);
key = "~Site";
if (expression.IndexOf(key, StringComparison.InvariantCultureIgnoreCase) == 0)
return web.Url+ expression.Substring(key.Length);
return expression;
}
}
...
You need to put this class to some assembly and register it with your prefix(e.g. WSSUrl) in Web.Config
<configuration>
<system.web>
<compilation>
<expressionBuilders>
<add expressionPrefix="WSSUrl"
type="{your Namespace}.WSSUrlExpressionBuilder,{Assembly Name}"/>
</expressionBuilders>
</compilation>
</system.web>
</configuration>
Assembly Name should be fully qualified if you put the assembly into GAC.
Thursday, October 7, 2010
SharePoint: How to get document icon image
There is a method in SPUtility which makes it much easier. It takes image file name from docicon.xml, and should work Ok even if the file name is not follow the pattern ic{doc ext}.gif
There is a good post about SPUtility.MapToIcon vs SPFile.GetIcon
string docIcon = SPUtility.ConcatUrls("/_layouts/images/",
SPUtility.MapToIcon(item.Web,
SPUtility.ConcatUrls(item.Web.Url,item.Url), "", IconSize.Size16));
There is a good post about SPUtility.MapToIcon vs SPFile.GetIcon
Subscribe to:
Posts (Atom)