If you’re using Infragistics WebHierarchicalDataGrid and getting “DataKeyField is invalid” error after assigning
DataKeyFields property for the root level:
xMyGrid.DataKeyFields = "[Key 1],[Key 2],[Key 3]"
and trying some data manipulation (like deleting rows, binding data etc.), try using
GridView property of the grid instead:
xMyGrid.GridView.DataKeyFields = "[Key 1],[Key 2],[Key 3]"
The first method used to work, but somewhere around 2011 release of NetAdvantage it broke.
If you ever hosted a content from external website in an IFRAME on your own site and wanted, for no reason whatsoever, to hide either top, bottom, left or right portion of that content – there’s an easy way.
Imaginge you have HTML markup like this:
<iframe frameborder="no" width="275" height="95" src="https://www.google.com/images/srpr/logo3w.png" />
It will display a pretty logo of some 3rd party company:
Now you got an idea to improve it a bit, by removing unneeded characters. Take a look at following markup:
<div style="margin:0px 0px 0px -120px">
<iframe frameborder="no" width="275" height="95"
Our IFRAME is now enclosed into 2 DIVs. Internal one shifts left margin of its content 120px into the content, and external one effectively hides everything outside the margins via hidden overflow. The result:
Of course the content doesn’t have to be IFRAME with external content, but if it’s internal to your site that means you have full control over it and don’t need to use this hack.
If you ever need to remove namespaces from an XPath string, regex is a way to go. [\w]+:(?!:) expression to be precise. So if, for example your xpath is
Dim sXpath as String = "/ns1:ElementOne/ElementTwo/ns2:ElementThree"
Regex.Replace(sXpath, "[\w]+:(?!:)", "")
will convert it into
Thanks Bogdan Emil Mariesan @ Stack Overflow for the solution
Last time I described how LINQ can be used to custom filter ADO.NET DataTable. This time I will demonstrate how this technique can replace built-in server-side filtering in Infragistics UltraWebGrid.
By default if server-side filtering is enabled in UltraWebGrid controls, it displays a small “funnel” icon in the column header, if you click this icon – a list of unique values from this column is displayed and selecting a value filters the grid by displaying only rows that have this value.
This default behavior works, sort of – it has many issues. If your grid has paging enabled – only values from the current page will be displayed. If your columns or values has characters that grid doesn’t like (commas, square brackets etc.) an exception will be thrown (this happens because under the hood grid converts your filters into a string that is passed to DataTable’s RowFilter), there’re other issues as well.
Why leave anything to chance when you can provide filtering yourself? Continue reading 'Totally custom filter for UltraWebGrid using LINQ'»
ADO.NET DataTable offers handy
RowFilter property (via its
DefaultView object), for example to filter by some string value and display filtered data in a grid a code like this is used:
odtMyData.DefaultView.RowFilter = "Field = 'value'"
odgDataGrid.DataSource = odtMyData
where odtMyData is a DataTable object and odgDataGrid is a Data Grid.
This works well, but what if you need preprocess data in the DataTable prior comparing it to the filter value – what if you need to apply a user-defined function to it? In my case I had a VB function called
ProcessTags which stripped HTML tags from a string, so for example strings like this:
<a href="http://someurl">This is a sample text</a>
<span style="color:red">This is a </span><label>sample text</label>
would be converted into the same text
This is a sample text
So I needed to create condition that would return DataTable rows with that have both HTML values by comparing to
"This is a sample text".
RowFilter‘s syntax is pretty poor and external function cannot be used, so something like
odtMyData.DefaultView.RowFilter = "ProcessTags(Field) = 'This is a sample text'"
odgDataGrid.DataSource = odtMyData
would throw an error.
Continue reading 'Replace DataTable RowFilter with LINQ'»