I wonder is it possible to create an image rotator for 4-6 images with the quick link buttons to each image similar to http://nivo.dev7studios.com/?
Btw, what control did you use on http://www.telerik.com/ ?
Btw, what control did you use on http://www.telerik.com/ ?
3 Answers, 1 is accepted
0
Princy
Top achievements
Rank 2
answered on 29 Mar 2012, 08:37 AM
Hi Miksh,
You can achieve this by using RadRotator control. Here is the code which i tried by referring to this demo.
ASPX:
C#:
JS:
Hope it helps,
Thanks,
Princy.
You can achieve this by using RadRotator control. Here is the code which i tried by referring to this demo.
ASPX:
<
telerik:RadRotator
ID
=
"RadRotator1"
runat
=
"server"
Width
=
"470px"
Height
=
"364"
ItemWidth
=
"470px"
ItemHeight
=
"230"
ScrollDuration
=
"500"
RotatorType
=
"Buttons"
DataSourceID
=
"SqlDataSource1"
OnDataBound
=
"RadRotator1_DataBound"
>
<
ItemTemplate
>
<
telerik:RadBinaryImage
runat
=
"server"
ID
=
"RadBinaryImage1"
DataValue='<%#Eval("Picture") %>' AutoAdjustImageControlSize="false" Width="90px" Height="110px" />
</
ItemTemplate
>
<
ControlButtons
LeftButtonID
=
"leftArrow"
RightButtonID
=
"rightArrow"
/>
</
telerik:RadRotator
>
<
asp:Panel
ID
=
"ButtonsContainer"
runat
=
"server"
>
</
asp:Panel
>
<
asp:SqlDataSource
ID
=
"SqlDataSource1"
runat
=
"server"
ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" ProviderName="System.Data.SqlClient" SelectCommand="SELECT TOP(15) * FROM [Categories]">
</
asp:SqlDataSource
>
C#:
protected
void
RadRotator1_DataBound(
object
sender, EventArgs e)
{
AddNavigationButtons();
}
private
void
AddNavigationButtons()
{
foreach
(RadRotatorItem item
in
RadRotator1.Items)
{
ImageButton ImageButton = CreateLinkButton(item.Index);
ButtonsContainer.Controls.Add(ImageButton);
}
}
private
ImageButton CreateLinkButton(
int
itemIndex)
{
ImageButton button =
new
ImageButton();
button.ID =
string
.Format(
"Button{0}"
, itemIndex+
" "
);
button.ImageUrl=
"Images/bullet5.jpg"
;
button.OnClientClick =
string
.Format(
"showItemByIndex({0}); return false;"
, itemIndex);
return
button;
}
<script type=
"text/javascript"
>
var
lastShownButton;
function
showItemByIndex(index)
{
var
oRotator = $find(
"<%= RadRotator1.ClientID %>"
);
oRotator.set_currentItemIndex(index);
if
(lastShownButton)
lastShownButton.removeClass(
"btnHighlight"
);
var
currentButton = getButtonByIndex(index);
currentButton.addClass(
"btnHighlight"
);
lastShownButton = currentButton;
}
function
OnClientItemShown(oRotator, args)
{
var
currentIndex = args.get_item().get_index();
if
(lastShownButton)
lastShownButton.removeClass(
"btnHighlight"
);
var
currentButton = getButtonByIndex(currentIndex);
currentButton.addClass(
"btnHighlight"
);
lastShownButton = currentButton;
}
function
getButtonByIndex(index)
{
var
buttonIdSelector = String.format(
"#Button{0}:first"
, index);
var
currentButton = $telerik.$(buttonIdSelector)
return
currentButton;
}
</script>
Hope it helps,
Thanks,
Princy.
0
miksh
Top achievements
Rank 1
Iron
answered on 29 Mar 2012, 01:21 PM
Thanks, I''l, try it out.
Eventaully, I wish to have this option as an out-of-box rotator feature.
Eventaully, I wish to have this option as an out-of-box rotator feature.
0
Elvin
Top achievements
Rank 1
answered on 18 Sep 2013, 03:25 AM
I followed your code but it doesn't seem to render the buttons. I'm not sure what's wrong.
I also did a small modification the code by adding the Access method to get the buttonContainer control.
See snippet below,
protected virtual RadRotator RadRotator1
{
get
{
return base.Container.GetControl<
RadRotator
>("RadRotator1", true);
}
}
protected virtual Panel ButtonsContainer
{
get
{
return base.Container.GetControl<
Panel
>("ButtonsContainer", true);
}
}
protected void RadRotator1_DataBound(object sender, EventArgs e)
{
AddNavigationButtons();
}
private void AddNavigationButtons()
{
foreach (RadRotatorItem item in RadRotator1.Items)
{
ImageButton ImageButton = CreateLinkButton(item.Index);
ButtonsContainer.Controls.Add(ImageButton);
}
}
private ImageButton CreateLinkButton(int itemIndex)
{
ImageButton button = new ImageButton();
button.ID = string.Format("Button{0}", itemIndex + " ");
button.ImageUrl = "Images/bullet5.jpg";
button.OnClientClick = string.Format("showItemByIndex({0}); return false;", itemIndex);
return button;
}
This is my Rotator.acsx snippet
<
sf:RadRotator
id
=
"RadRotator1"
runat
=
"server"
RotatorType
=
"SlideShow"
>
<
ItemTemplate
>
<
div
>
<
div
>
<
asp:Image
runat
=
"server"
ID
=
"newsImage"
/>
</
div
>
<
div
>
<
asp:Label
runat
=
"server"
ID
=
"newsTitle"
/>
<
asp:Label
runat
=
"server"
ID
=
"newsText"
/>
<
asp:HyperLink
runat
=
"server"
ID
=
"newsLink"
><
span
>Read more...</
span
></
asp:HyperLink
>
</
div
>
</
div
>
</
ItemTemplate
>
</
sf:RadRotator
>
<
sf:RadRotator
id
=
"RadRotator1"
runat
=
"server"
RotatorType
=
"SlideShow"
>
<
ItemTemplate
>
<
div
>
<
div
>
<
asp:Image
runat
=
"server"
ID
=
"newsImage"
/>
</
div
>
<
div
>
<
asp:Label
runat
=
"server"
ID
=
"newsTitle"
/>
<
asp:Label
runat
=
"server"
ID
=
"newsText"
/>
<
asp:HyperLink
runat
=
"server"
ID
=
"newsLink"
><
span
>Read more...</
span
></
asp:HyperLink
>
</
div
>
</
div
>
</
ItemTemplate
>
</
sf:RadRotator
>
<
asp:Panel
ID
=
"ButtonsContainer"
runat
=
"server"
>
</
asp:Panel
>
<
script
type
=
"text/javascript"
>
var lastShownButton;
function showItemByIndex(index) {
var oRotator = $find("<%= RadRotator1.ClientID %>");
oRotator.set_currentItemIndex(index);
if (lastShownButton)
lastShownButton.removeClass("btnHighlight");
var currentButton = getButtonByIndex(index);
currentButton.addClass("btnHighlight");
lastShownButton = currentButton;
}
function OnClientItemShown(oRotator, args) {
var currentIndex = args.get_item().get_index();
if (lastShownButton)
lastShownButton.removeClass("btnHighlight");
var currentButton = getButtonByIndex(currentIndex);
currentButton.addClass("btnHighlight");
lastShownButton = currentButton;
}
function getButtonByIndex(index) {
var buttonIdSelector = String.format("#Button{0}:first", index);
var currentButton = $telerik.$(buttonIdSelector)
return currentButton;
}
</
script
>
<
asp:Panel
ID
=
"ButtonsContainer"
runat
=
"server"
>
</
asp:Panel
>
<
script
type
=
"text/javascript"
>
var lastShownButton;
function showItemByIndex(index) {
var oRotator = $find("<%= RadRotator1.ClientID %>");
oRotator.set_currentItemIndex(index);
if (lastShownButton)
lastShownButton.removeClass("btnHighlight");
var currentButton = getButtonByIndex(index);
currentButton.addClass("btnHighlight");
lastShownButton = currentButton;
}
function OnClientItemShown(oRotator, args) {
var currentIndex = args.get_item().get_index();
if (lastShownButton)
lastShownButton.removeClass("btnHighlight");
var currentButton = getButtonByIndex(currentIndex);
currentButton.addClass("btnHighlight");
lastShownButton = currentButton;
}
function getButtonByIndex(index) {
var buttonIdSelector = String.format("#Button{0}:first", index);
var currentButton = $telerik.$(buttonIdSelector)
return currentButton;
}
</
script
>
Can anyone point me in the right direction?