Recently I encountered an issue while deploying a package from one environment to another. While testing the smartobject after the deployment, the following error message pop up :
Reason: this error is thrown when the underlying method (tables or stored procedure in this case) cannot be found. This could be due to deletion or when the external component is not setup yet.
Steps to create the above scenario:
Create a few stored procedures
Refresh the Service Instance so that Stored Procedures are retrieved from the DB .
Create the smartobjects from the instances.
4. Now go back to the DB and delete one of the previously created Stored Procedure and add another one. Then refresh again (but do not create or generate the smartobject yet):
As can be seen in the above image, there is a difference between the stored procedures. [dbo].[GetAnotherThing] does not exist and a new stored procedure [dbo].[GetSomethingFromTableDrop] is added. When the SmartObject GetAnotherThing is executed, the error dialog in Figure 1 will be shown.
Most of us when generating SmartObjects will use the Service tester to do so and select the Create method (Figure 4). When the Create SmartObjects method is used, smartobject with the missing method will still be there.
The reason is that when this method is used, it does not delete any smartobjects since it is a smartobject creation/update method (Figure 5).
Instead use the Generate smartobject method (Figure 6), this method will display the smartobject to be deleted as well besides the Create/Update method, BUT the drawback is that, it does not allow you to select the category to create the smartobject to:
Do not be mistaken and think that when external components are deleted, and doing a refresh of the service instances and executing the create smartobjects method will remove smartobjects that is to be deleted. Use the generate smartobjects method to help verify whether any smartobjects are to be deleted. Hope this helps someone!
As more and more enterprise are embracing Cloud and Office 365, I thought that this will be a great time to start writing up on branding your Sharepoint Online, which comes part of the package with Office 365.
Sharepoint Online comes configured with the Top Navigation Bar for you. But we want to hide it, as i dont have all the Sites that I created to be shown in that portion.
Use the following .css to hide the “HR” and “Search”.
You can add the following the master page or add this to a content editor webpart.
Since the EWS API requires the user’s login name and password to execute the web service, the broker needs to run under SSO authentication mode. The selected authentication mode must be an AD security provider.
The email address will be retrieved via the System.DirectoryService.AccountManagement API, so make sure the user has a valid email address in AD.
As the broker requires the user’s login name and password to execute the EWS call, the service instance must be set up to use SSO Authentication Method and and AD security provider (by default, K2) must be selected.
The following are the description for the service keys:
UseAutoDiscover – Whether to lookup the URL using the Auto Discover service.
RequireHTTPS – Whether to enforce that the Exchange server’s URL needs to use the HTTPS scheme.
EwsURLFallback – The Exchange server’s EWS URL to be used when the broker fails to get a valid response from the Auto Discover service or when the UseAutoDiscover key is set to false.
Available Methods in K2 Exchange OOFSettings broker
This is the list of methods available:
Get OOF Settings
This method grabs the current selected user’s out of office settings from the Exchange server.
Turn On OOF Notification with Schedule
This method allows the user to turn on the out of office notification, set the reply email content and most importantly set the start and end date/time.
Turn On OOF Notification Permanently
Well, this method is the same as the previous one, except that there is no start and end date/time defined. It will be turned on as long as required.
Turn Off OOF Notification
This method will turn off the out of office notification.
In this article, I’m going to describe how to add a K2 smartforms custom control icon. The official article is located at help.k2.com but it is not 100% accurate and contains mistakes in the CSS sample. Here’s the step by step guide:
Create the icon
The basic requirements of the K2 smartforms custom control icon is that it needs to be a 16×16 pixel image. In this sample, I’ll be using the Microsoft Paint application to create it.
Search for your Paint application in your Windows Start menu and launch it.
In your Paint application, click on Files > Properties.
Set the Width and Height of the image to 16 and click OK.
Draw your icon and save it. In my sample, I’ve saved my image in PNG format.
Adding the icon to your custom control
Now, here are the steps to add your K2 smartforms custom control icon:
Add the icon to your VS project.
You will need to set the icon as a Embedded Resource. So right click on the icon, click on Properties and select Embedded Resource under Build Action.
Add the icon as a WebResource in your control code file. Do take note that your resource name starts with the [Project Name], [Folder Name] and ends with the [Icon File Name], separated by a full stop (.). You should update the resource type, if you are not using a PNG file like me in this sample.
You will need to add the K2 smartforms custom control icon styling in your control’s CSS file now. In the style sample below, you will need to replace a) the control name from “digital signature” to your control’s name and b) update the icon’s WebResource URL to the one you just created in the section above. Note: The CSS style provided at help.k2.com does not include spaces that separates the css class name. This causes the style to not function in your browser.
.tree li.digitalsignature-control > a,
.tree li.digitalsignature-control > span,
.tree li.digitalsignature-control.children > a,
.tree li.digitalsignature-control.children.open > a,
.tree li.digitalsignature-control.children.closed > a,
But, the catch here is the dashboard that we are used to are gone. Parse is not releasing the dashboard along with the source code and the analytics portion. Ok, they heard all the developers and are trying to release the code, but in the mean time this tutorial still works!
Now, today I am going to show how we can leverage and alternative dashboard to connect to Parse.
In this article, I will be using the Parse Server Example and deploy to Heroku using the free tier. This will apply if you are hosting this on your on VPS as well.
Follow the instruction provided by the Parse team, set it up on Heroku free tier ( I am not covering this but if there’s a need, I am happy to provide the instruction).
What does the List Sequence Number custom control do?
It helps you print running numbers on the first column of your List View.
But I can already do that with a SQL View or SQL Stored Procedure…
Well, yes you can, but can your solution:
Add running numbers without altering the original data source?
Can it be do the same for data sources other than SQL?
Can it keep the numbering across different pages? (i.e. pagination)
Can it keep the numbering after a executing sort? (i.e. click on the column headers)
Can it update the numbering adding a new record row? (i.e. adding a new row in a editable list)
So, if you solution can’t do it, then go on and try the List Sequence Number Display custom control! =)
Some things I’ve learned while developing the List Sequence Number Display control
Just to share some of the things I’ve learned from developing this custom control
The parent grid’s html entity ID is always the first set of Guid of my control’s Guid combination
If you look at the generated custom control’s ID via a browser’s Developer Tool, you will see something similar to the following:
In my sample here, the div tag’s ID is “b113bc00-d8f7-4ce5-ae81-be2a0ecfe68d_5a10bfd9-f955-41b2-87f7-17e88cd158db”. So if I want to find the Grid which my control resides in, I just need to get the first set of GUID (b113bc00-d8f7-4ce5-ae81-be2a0ecfe68d), separated by the underscore symbol (‘_’) and look for the GUID combination in the ID of a “div” tag with the class name “grid”.
This is the piece of JQuery I use to get my grid handle.
If you notice, it also checks if the parentIDString found starts with “00000000-“. This is to handle case where by the grid’s View is not within a Form.
So what are the changes I’m listening to?
Based on my first set of observations for display-only view:
On the grid’s div tag, the “pagesize” attribute will be changed whenever a column sort occurs.
On the grid’s div tag, the “listrefreshed” attribute will be written and changes when a list refresh occurs.
On the grid’s div tag, the “actiontype” attribute will change when a row editing event occurs.
With these information, my first observer looks like this:
The “pagesize” attribute will not be written in the grid’s tag. So I can use this to confirm whether the current grid is an editable view.
Since there’s no paging in an editable list view, the usual attributes in my first observation cannot be used to trigger the observer. From subsequent testing, I also found that there’s no other usable attributes to observe for change. My solution then is to listen to the “Column Headers” change by inserting my own custom attribute. It seems that when changes occur on an editable list view, it will refresh the column headers as well.
Well, as the section header says, that’s all I have learned from developing the List Sequence Number Display control. If you are interested in the codes, you can download it from the project from the link at the top of this post. Enjoy!