Friday, March 9, 2012

Detection of field value changes in document library

There is pretty easy way to detect change of field value in document library. You can use EventReceiver attached to your content type. ItemUpdating is a good place detects changes and performs validation if required. In my case it was required to detect that value of field has changed and additionally to synchronize value of two fields and perform some additional validation of entered values.

Thursday, March 8, 2012

Document Library and custom rendering templates

Goal was to create document library with requirement to hide fields which have 'Hidden' string in name (unfortunately I could not use ShowIn.. settings due to specific requirement from external tools integrated with SharePoint instance). My first idea was to use custom FormTemplates with custom ListFieldIterator.

Quickly, it turns out that there is a problem with registering FormTemplates for content types based on document library. SharePoint 2010 was ignoring them. The only solution I was able to find, was to disable content type inheritance. That allowed me to register my own FormTemplates.

Monday, February 27, 2012

Returning rows in random order from MS SQL Server

Have you ever needed to return rows from MS SQL Server in random order every time you execute query? Here is simple solution to achieve this.

select top 10 * from some_table order by newid();

Thursday, February 9, 2012

Sending emails from .NET to local folder

This is useful trick when you need to test email sending from your application without flooding your inbox.
It is enough to set up our mail settings in following way:

<configuration>
  <system.net>
    <mailSettings>
      <smtp deliveryMethod="SpecifiedPickupDirectory">
        <specifiedPickupDirectory pickupDirectoryLocation="Dir"/>
      </smtp>
     </mailSettings>
  </system.net>
</configuration>

Monday, February 6, 2012

Raven DB tutorials

Very nice series of tutorials about RavenDB by Piotr Kwapin.

  • Part 1 - Introduction and Basic Operations
  • Part 2 - Simple Querying

Definitely worth to see. Have a nice reading

Sunday, January 29, 2012

Efficient dates processing in Autonomy Connectors

It happens that data for indexing are in poor shape. Majority of problems are different formats of the same piece of information. This time I will write shortly about dates processing and how to keep them consistent. I'm going to show ImportExtractDate command and it's parameters:

Unexpected crashes of Notes Connector

It happens that Notes Connector is crashing during processing of Lotus Notes database without any specific reason. What is even worst, it usually does not leave any clues in log files. It just exists without any additional information

In my case reason for that behavior were missing fields (on some of Notes documents I was indexing). I was trying to import such field, and perform on it certain operations. This second part was resulting in crash.