Scrolling by touching the white space between the tiles is possible. If you disable selection scrolling can work as expected. Note that for tablets the scrolling container must be an element outside of the tilelist. A workaround that fixes the majority of the issues is available in the attached sample.
Hello,
I would like to be able to move tiles between two RadTileLists. This may be through drag and drop or through an external button click.
A postback occurs from the button, but its postback events are not raised (the Click event handler for the button)
Setting the CssClass property of a tile does not transfer the custom class attribute to the rendered markup. This means that custom classed cannot be used to create a cascade and style concrete tiles.
Currently alt="" for the images and such a property will let the developers improve the accessibility of their pages.
Tap on a tile to execute its navigation or rather some JavaScript. Expected behavior is for the click event to fire. Actual result is that the tile's drag is initiated - the DragStart event on the tilelist fires and the tile gets the big z-index, and you can drag it around. This behavior does not manifest when there is only one tilegroup. Setting EnableDragAndDrop to false will alleviate this, but will remove the drag-and-drop functionality.
Sometimes the OnClientClicked event is fired ony after the second tap, the first shows the peek template. Sometimes this can also be observed with the NavigateUrl. It is easiest seen when JS code is executed from the NavigateUrl, e.g.: NavigateUrl="javascript:CDRequestMenu()" This is related to the fact that there are no separate events on a touch device for mouseover, mousedown, click and mouseup.
The client-side setter for EnableDragAndDrop still lets the user drag tiles, even though the other tiles are not reordered, and releasing the tile puts it back in its original place. Dragging should not be available at all.
The same number of tiles that are hidden from the given group are lost from its end upon postback.
A possible workaround is to override the CSS for tiles that need no selection abilities: <telerik:RadContentTemplateTile runat="server" ID="RadContentTemplateTile1" EnableSelection="false" CssClass="noSelection"> </telerik:RadContentTemplateTile> .noSelection div.rtileSelectedIcon { display: none; } div.RadTile.rtileSelected.noSelection { border: 2px solid transparent; }
With more than 9 columns (36 wide tiles or 72 square tiles with TileRows=4) the subsequent tile columns fall down on a second row. With TileRows=2 the breaking point would be 19 wide or 37 square tiles. Ways around this are: - separating tiles into more groups, if possible. When databinding the DataGroupNameField is used to point to the desired group name as a field in the datasource - when creating tiles programmatically you can count them and create new groups when needed - if you do not need any special functionality provided by RadTileList you can consider creating standalone tiles
A possible workaround is to cancel the OnClientClicking and OnClientSelecting events of the tile. Additionally, add a custom CSS class that will also enable you to apply some custom styling to disabled tiles, because most browsers do not have a disabled state for div elements. The CSS class is what is used to distinguish disabled tiles instead of the disabled attribute. NOTE: this will be fixed in the Q1 2014 SP1 release. Here is a workaround example for RadTileList: <script type="text/javascript"> function preventDisabledTileClicks(tileList, args) { var tile = args.get_tile(); if ($telerik.$(tile.get_element()).hasClass("disabledTile")) { args.set_cancel(true); } } </script> <telerik:RadTileList ID="RadTileList1" runat="server" SelectionMode="Multiple" OnClientTileSelecting="preventDisabledTileClicks" OnClientTileClicking="preventDisabledTileClicks"> <Groups> <telerik:TileGroup> <telerik:RadTextTile runat="server" ID="S5_1" Text="5S"> </telerik:RadTextTile> <telerik:RadTextTile runat="server" ID="OEE_2" Text="OEE" CssClass="disabledTile" Enabled="false"> </telerik:RadTextTile> <telerik:RadTextTile runat="server" ID="SMED_3" Text="SMED" CssClass="disabledTile" Enabled="false"> </telerik:RadTextTile> <telerik:RadTextTile runat="server" ID="VSM_4" Text="VSM" CssClass="disabledTile" Enabled="false"> </telerik:RadTextTile> <telerik:RadTextTile runat="server" ID="RCM_5" Text="RCM" CssClass="disabledTile" Enabled="false"> </telerik:RadTextTile> <telerik:RadTextTile runat="server" ID="TPM_6" Text="TPM" CssClass="disabledTile" Enabled="false"> </telerik:RadTextTile> </telerik:TileGroup> </Groups> </telerik:RadTileList> If you are using Standalone tiles you can attach to their OnClientSelecting and OnClientClicking events. Instead of getting the tile from the event arguments, you will get it as the first argument the handler receives. To make this more reusable, you can use ASP Themes to apply this on an application level and include the script in a common script on a master page.
This issue manifests only when there is a single column of tiles, i.e., there are no more groups and no second column of tiles exists in the group. If the tile number can be expected, you can change the Height/TileRows property to create two columns. Or, split the tiles between two groups. Of course, setting EnableDragAndDrop to false will also eliminate the issue.
If a target field is not provided in the data source and you need all tiles to have the same Target, you can use the TileCreated event to set this property. A sample is attached.
When items are data bound, their IDs should be stored in the ViewState so the next time they are recreated (upon a postback), they have the same IDs, so postback events can be raised. Also, when a new datasource is provided to the tilelist, keeping track of the IDs will let the control create tiles with the same IDs that were used instead of incremental ones. Both of these will prevent the tiles ID change in the first two page loads after a DataBind() call. Note that this applies only for the case when AppendDataBoundItems is false; when it is true new datasources should only add items. A workaround is to set IDs to the tiles manually when they are created (this can be done with a simple counter variable). To accommodate for rebinding the tilelist, its controls collection must be cleared prior to databinding as a workaround. A sample is attached that shows these in action.