Friday, January 28, 2011

LinqSQL tip #2– linqDatasource binding funkyness

Binding controls via a datasource is nice and easy, however when you try and change the way the data is displayed in a dropdown for example, Linq can be a pain.

Example 1 – Add text variable flag to show what entry is a primary category and which are secondary categories

<asp:LinqDataSource ID="LDSRentalDefinition"
runat="server" ContextTypeName="DB"
Select="new (ID, (iif(isPrimary==true,' ','+') + Name)  as TextValue)"
TableName="Categories" OrderBy="iif(isPrimary==true,' ','+'),Name" >

Weird thing is in the SELECT, IF statements don’t work, but old fashioned IIF statements do.

Still gets me that some C# code works inside the LinqDataSource on a VB page, but some VB works as well.
( || does work where | doesn’t )

Its a nice visual thing for the users as they can see straight away that any child category has a + in front of it in the dropdownlist

Annoyingly I was only allowed a single character inside the ‘’, page would crash otherwise.

Example 2 – add multiple data fields to a single item in the listbox

This is an easier one, but still very powerful to make your UI make more sense to the user

Select="new (ID, (Name + ' ' + Description) as TextValue”

List box items are displayed as “Bob boss”, “John cleaner” rather than just a first name.

No comments: