I'm having quite the issue trying to DataBind a bool? value to the Enabled property slider in a GridTemplateColumn of a Grid.
Here is my setup:
<telerik:RadGrid ID="_rgPermissions" runat="server" AutoGenerateColumns="False" HeaderStyle-Font-Bold="true"
AllowSorting="true" GridLines="None" Width="517px" Height="595px" Skin="Office2007"
OnNeedDataSource="_rgPermissions_NeedDataSource" OnItemDataBound="_rgPermissions_ItemDataBound"
Visible="false">
<AlternatingItemStyle BackColor="#f4f5f7" />
<GroupingSettings CaseSensitive="false" />
<MasterTableView>
<Columns>
<telerik:GridBoundColumn UniqueName="roleName" ItemStyle-Font-Size="X-Small" DataField="roleName"
HeaderText="Role">
</telerik:GridBoundColumn>
<telerik:GridTemplateColumn UniqueName="SliderPermissions" HeaderText="Permissions"
ItemStyle-HorizontalAlign="Center" HeaderStyle-Width="300px">
<ItemTemplate>
<telerik:RadSlider runat="server" ID="_slPermissions" Orientation="Horizontal" Width="325px"
Height="40" TrackPosition="Center" ItemType="Item" Skin="Windows7"
OnClientBeforeValueChange="IsItemDisabledOnPermissionsSlider" >
<Items>
<telerik:RadSliderItem Text="None" Value="None" ToolTip="No permissions" runat="server">
</telerik:RadSliderItem>
<telerik:RadSliderItem Text="View" Value="View" Enabled='<%# Convert.ToString(DataBinder.Eval(Container, "DataItem.View_Static")).Equals("") ? true : !(bool)DataBinder.Eval(Container, "DataItem.View_Static") %>'
ToolTip="Role can view folder and its contents" runat="server"></telerik:RadSliderItem>
<telerik:RadSliderItem Text="Add" Value="Add" Enabled='<%# Convert.ToString(DataBinder.Eval(Container, "DataItem.Add_Static")).Equals("") ? true : !(bool)DataBinder.Eval(Container, "DataItem.Add_Static") %>'
ToolTip="Role can upload files to folder or create new folders within" runat="server">
</telerik:RadSliderItem>
<telerik:RadSliderItem Text="Edit" Value="Edit" Enabled='<%# Convert.ToString(DataBinder.Eval(Container, "DataItem.Edit_Static")).Equals("") ? true : !(bool)DataBinder.Eval(Container, "DataItem.Edit_Static") %>'
ToolTip="Role can edit folder and its contents" runat="server"></telerik:RadSliderItem>
<telerik:RadSliderItem Text='Delete' Value="Delete" Enabled='<%# Convert.ToString(DataBinder.Eval(Container, "DataItem.Delete_Static")).Equals("") ? true : !(bool)DataBinder.Eval(Container, "DataItem.Delete_Static") %>'
ToolTip="Role can delete folder and its contents" runat="server"></telerik:RadSliderItem>
</Items>
</telerik:RadSlider>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn DataField="View_Static" Visible="false" UniqueName="View_Static">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Add_Static" Visible="false" UniqueName="Add_Static">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Edit_Static" Visible="false" UniqueName="Edit_Static">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Delete_Static" Visible="false" UniqueName="Delete_Static">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="roleID" Visible="false" DataField="roleID" AllowSorting="true">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="parentMasterID" DataField="parentMasterID" Visible="false"
AllowSorting="true">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="FolderPermissionsID" Visible="false" UniqueName="FolderPermissionsID">
</telerik:GridBoundColumn>
</Columns>
</MasterTableView>
<HeaderStyle BorderColor="DarkGray" BorderStyle="Solid" BorderWidth="1px" />
</telerik:RadGrid>
<telerik:RadCodeBlock ID="_rcb" runat="server">
<script type="text/javascript">
function IsItemDisabledOnPermissionsSlider(sender, args) {
if (!sender.get_items()[args.get_newValue()].get_enabled())
args.set_cancel(true);
}
</script>
</telerik:RadCodeBlock>
This is not working at all. Every item in the slider still remains enabled. Note, while the "Static" bool's can be null, I tried this is with a bool value guaranteed not to be null using Enabled='<%# !(bool)DataBinder.Eval(Container, "DataItem.NormalBool") %>' , and it still doesn't work.
I even tried to do Text='<%# DataBinder.Eval(Container, "DataItem.SomeText") %>' and that didn't show up. Nothing seems to DataBind to the Sliders.
Any advice?
I know I can do all of this through the Grid's itemdatabound, but I'd prefer not to.