Matthew Sigman

Hands-On Software Leader

Matthew Sigman - Hands-On Software Leader

Add Dynamic Node to SiteMapProvider

Quick post to present a simple solution to the question:

How do you dynamically insert a node into an ASP.NET SiteMap?

I needed to do this for a project I was working on but all I found on Google were a bunch of way-too-complex solutions.  So I developed this simple approach and wanted to share it in hopes it helps someone in the same predicament.

Continue reading “Add Dynamic Node to SiteMapProvider” »

SSRS print icon not appearing in Internet Explorer 11 (Not able to print reports from IE11)

Products involved

  • SQL Server Reporting Services 2012
  • .NET Framework 4.5
  • Internet Explorer 11


Due to the new user agent string that IE 11 sends, SSRS no longer correctly identifies that browser as among the “whitelisted” browsers to enable the print icon/functionality when viewing SSRS reports. The print icon simply disappears. Enabling Compatibility View restores the print icon, but this is not a workable solution.

You can confirm this is the case by navigating to a report within a page, then pressing F12 to go into the Developer Tools, then go to the Emulation tab (last tab in the list), and change the User Agent String to Internet Explorer 10. The page will refresh and you should see the SSRS print icon re-appear.  This will confirm you are experiencing the issue described in this post.


Continue reading “SSRS print icon not appearing in Internet Explorer 11 (Not able to print reports from IE11)” »

TFS 2012 Update 2 Error – TF400898

After upgrading Team Foundation Server 2012 to Update 2, we started to get an error when opening a PBI or Bug via the web portal.  This was the error:

TF400898: An Internal Error Occurred.


Not terribly helpful… Anyhow, after searching the web there were some similar-sounding issues but none of them helped.  In this case it turns out the problem was that non-Administrators received the error, but Collection Administrations did not get the error.  I’m not sure why that is the case yet, but will continue to look into it.

As a temporary solution for anyone with this issue, try giving increased permission to your team.

Telerik RadComboTree – A ComboBox with collapsible items


One of the most useful existing controls in the Telerik RadControls suite is the RadComboBox.  It offers multi-column support to template support, anything you need in a drop-down can be rendered in RadComboBox. The control provides a rich set of features which include: client-side API with events, load-on-demand, auto-complete, filtering, multi-column support, highly customizable appearance through skins, content template support and much more. All this flexibility comes packaged in a control that renders lightweight, semantic HTML for optimum page performance and SEO.

The one option it doesn’t have out of the box, is the ability to group nodes into a hierarchical relationship and collapse/expand them, similar to the RadTreeView control.

Introducing the RadComboTree

This control basically combines the ComboBox and the TreeView to have a drop-down hierarchical list of nodes that can optionally have checkboxes.

Continue reading “Telerik RadComboTree – A ComboBox with collapsible items” »

PHP5 substr() breaking change got me after all these years

I recently migrated a site from PHP4 to PHP5 and though I went through and updated all the code to be PHP5 compatible… I thought… I missed one minute detail buried in the documentation of PHP 5.2.2 (this change was not in PHP 5.0):

If the start parameter indicates the position of a negative truncation or beyond, false is returned. Other versions get the string from start.

What does this mean?  In my case I was truncating some line break characters from the end of a string, which had been working fine for at least 5 years on PHP4, like so:

$cur_row = substr($cur_row,'',-2);  //This works up to and including PHP 5.2.1

However as of 5.2.2 it started returning FALSE instead!  Talk about difficult to track down…

Anyhow, the updated syntax is as follows:

$cur_row = substr($cur_row,0,-2);  //This works on all versions