Programmatically Changing a SharePoint Barcode
One of the limitations in the current version of SharePoint is auto-assignment of barcode information when a SPListItem is added to a container, contrary to consuming user input, such as a value from a generic reader to generate the barcode. Honestly, I find it a monster limitation since this situation is the most conventional implementation of Barcode ID strategies.
While by default it will work like this when using ListFormWebPart pages, it is feasible to override this default behavior from your own custom code to generate new barcodes, set to your ID, inclusive of preview and ID association for things like tooltips on hover over.
Firstly, there are some namespaces that people don’t work with very much that have to be used. These are Microsoft.Office.RecordsManagement.PolicyFeatures and Microsoft.Office.RecordsManagement.InformationPolicy. Once you have these references established, since the barcoding is inherent with imaging, it is helpful to set an Image global qualifier to the System.Image namespace as well ala Image=System.Drawing.Image.
Secondly, you actually have to employ the barcode fields themselves. Unfortunatly, the SPBuiltInFieldId enumeration doesn’t have a reference to any of the ID’s that are required which is kind of a bummer since we have to make SPField objects to represent those fields and turn off their readonly properties (SPField.ReadOnlyField). There are three fields that are a concern, the barcode value, the barcode image, and the barcode preview. Once you have those toggled off, the code is unsophisticated to get a new image and associated value. You simply have to use the Barcode.ProvisionBarcodeWithValue() and Barcode.SetBarcodePreview() methods, then call the SPListItem.Update() method, where the fieldValue variable is some arbitrary string representing the new ID.
-
Image img;
-
Barcode.ProvisionBarcodeWithValue(item, true, ref fieldValue, out img);
-
Barcode.SetBarcodePreview(item);
-
item.Update();
That’s it!
Related posts:
- How to Programmatically Recycle Application Pools In C#
- Dump Recycle Bin Programmatically
- How To Programmatically Enumerate SharePoint Document Library …
- Controlling SPField Display
- Programmatically Using Windows Search Service 4 to Search Network Shares
3 Comments »
RSS feed for comments on this post. TrackBack URL























Articles & Research
SharePoint Architecture
Research Methodology
Personal/Off-Topic
Article Or Research Filed Under 

[...] Programmatically Changing a SharePoint Barcode [...]
Pingback by Links (9/3/2009 « Steve Pietrek – Everything SharePoint) — September 3, 2009 @ 4:36 pm
Hello
Can you please give a sample code?
I have this error.
“Value cannot be null.
Parameter name: spListItem ”
where do you use this code? in Event Receiver or on Workflow?
I use it in workflow with following Codes:
Image img=Barcode.GetBarcodeImage(workflowProperties.Item);
string fieldValue = “12345″;
SPListItem Item=workflowProperties.Item;
Item.Fields["BarcodeImage"].ReadOnlyField = false;
Item.Fields["BarcodePreview"].ReadOnlyField = false;
// Item.Fields["BarcodeValue"].ReadOnlyField = false;
Barcode.ProvisionBarcodeWithValue(workflowProperties.Item, true, ref fieldValue, out img);
Barcode.SetBarcodePreview(workflowProperties.Item);
Item.Update();
Comment by Parsa Aslani Far — March 27, 2011 @ 10:45 pm
I have the same problem. I generated a new Item with spList.AddItem(). And set the ReadOnlyFields with
if (spField.InternalName == “_dlc_BarcodeImage”) spField.ReadOnlyField = false;
if (spField.InternalName == “_dlc_BarcodePreview”) spField.ReadOnlyField = false;
if (spField.InternalName == “_dlc_BarcodeValue”) spField.ReadOnlyField = false;
Any solution found.
Greetings Peter
Comment by Peter — May 27, 2011 @ 3:05 am