I have create a user control that contains a RadGrid. I have enabled infinite Scrolling and this worked fine until I realized that If I wanted to have the User control multiple times on a single page. I found that I needed to use the RadAjaxManagerProxy inside the user control.Then I placed the RadAjaxManager on the master page. Once I did this the scrolling functionality stopped working.
Master Page.
User Control
Page that contains multiple Instances.
Master Page.
<
telerik:RadAjaxManager
ID
=
"RadAjaxManager1"
runat
=
"server"
>
</
telerik:RadAjaxManager
>
User Control
<
asp:HiddenField
ID
=
"hdfnTotalRecords"
runat
=
"server"
/>
<
telerik:RadCodeBlock
ID
=
"RadCodeBlock1"
runat
=
"server"
>
<
script
type
=
"text/javascript"
>
function HandleScrolling(e) {
var totalRecords = $('[Id$=hdfnTotalRecords]').val();
var grid = $find("<%=RadGrid1.ClientID %>");
var scrollArea = document.getElementById("<%= RadGrid1.ClientID %>" + "_GridData");
if (IsScrolledToBottom(scrollArea)) {
var currentlyDisplayedRecords = grid.get_masterTableView().get_pageSize() * (grid.get_masterTableView().get_currentPageIndex() + 1);
//if the visible items are less than the entire record count
//trigger an ajax request to increase them
if (currentlyDisplayedRecords <
totalRecords
) {
alert("here");
$find("<%= RadAjaxManager.GetCurrent(Page).ClientID %>").ajaxRequest("LoadMoreRecords");
}
}
}
//calculate when the scroll bar is at the bottom
function IsScrolledToBottom(scrollArea) {
var currentPosition = scrollArea.scrollTop + scrollArea.clientHeight;
return currentPosition == scrollArea.scrollHeight;
}
function onRequestStart(sender, eventArgs) {
if (eventArgs.get_eventTarget().indexOf("ibtnPhone") != -1) {
eventArgs.set_enableAjax(false);
}
}
function RowDblClick(sender, eventArgs) {
var test = eventArgs.getDataKeyValue("Id");
window.location.href = '/Messages/AddEditMessage.aspx?Id=' + test
}
</
script
>
</
telerik:RadCodeBlock
>
<
telerik:RadWindowManager
id
=
"WindowManager1"
runat
=
"server"
>
<
windows
>
<
telerik:radwindow
id
=
"Window1"
top
=
"150"
left
=
"10"
runat
=
"server"
width
=
"700px"
height
=
"150px"
></
telerik:radwindow
>
</
windows
>
</
telerik:RadWindowManager
>
<
telerik:RadAjaxManagerProxy
ID
=
"RadAjaxManager1"
runat
=
"server"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"RadGrid1"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadGrid1"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"RadAjaxManager1"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadGrid1"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManagerProxy
>
<
telerik:RadAjaxLoadingPanel
ID
=
"RadAjaxLoadingPanel1"
MinDisplayTime
=
"500"
Transparency
=
"25"
BackColor
=
"#ffffff"
runat
=
"server"
CssClass
=
"ajaxloader"
/>
<
telerik:RadGrid
ID
=
"RadGrid1"
runat
=
"server"
AllowSorting
=
"True"
GridLines
=
"None"
AutoGenerateColumns
=
"false"
OnItemCommand
=
"RadGrid1_ItemCommand"
OnItemDataBound
=
"Messages_ItemDataBound"
OnNeedDataSource
=
"RadGrid1_NeedDataSource"
AllowAutomaticDeletes
=
"True"
AllowPaging
=
"true"
PageSize
=
"5"
>
<
PagerStyle
Visible
=
"False"
/>
<%--<
PagerStyle
Visible
=
"true"
/>--%>
<
MasterTableView
Width
=
"100%"
DataKeyNames
=
"Id"
CommandItemDisplay
=
"Top"
ClientDataKeyNames
=
"Id"
>
<
CommandItemTemplate
>
<
table
>
<
tr
>
<
td
width
=
"45px"
>
<
asp:LinkButton
ID
=
"btnAddNew"
runat
=
"server"
CommandName
=
"AddNewMessage"
ToolTip
=
"Add a new message."
><
img
style
=
"border:0px;vertical-align:middle;"
alt
=
""
src
=
"/Images/pc_icon_new_15x15.gif"
/> New</
asp:LinkButton
>
</
td
>
<
td
width
=
"45px"
>
<
asp:LinkButton
ID
=
"btnEdit"
runat
=
"server"
CommandName
=
"EditMessage"
ToolTip
=
"Edit the selected message."
><
img
style
=
"border:0px;vertical-align:middle;"
alt
=
""
src
=
"/Images/pc_icon_edit_15x15.gif"
/> Edit</
asp:LinkButton
>
</
td
>
<
td
width
=
"60px"
>
<
asp:LinkButton
ID
=
"btnDelete"
runat
=
"server"
CommandName
=
"DeleteMessage"
ToolTip
=
"Delete the selected message."
><
img
style
=
"border:0px;vertical-align:middle;"
alt
=
""
src
=
"/Images/pc_icon_delete_15x15.gif"
/> Delete</
asp:LinkButton
>
</
td
>
</
tr
>
</
table
>
</
CommandItemTemplate
>
<
Columns
>
<
telerik:GridClientSelectColumn
UniqueName
=
"ClientSelect"
HeaderStyle-Width
=
"5%"
/>
<
telerik:GridBoundColumn
DataField
=
"Id"
HeaderText
=
"Id"
UniqueName
=
"Id"
DataType
=
"System.Int32"
HeaderStyle-Width
=
"20%"
/>
<
telerik:GridBoundColumn
DataField
=
"DisplayName"
HeaderText
=
"Name"
UniqueName
=
"DisplayName"
DataType
=
"System.String"
HeaderStyle-Width
=
"20%"
/>
<
telerik:GridBoundColumn
DataField
=
"FileDateTime"
HeaderText
=
"Created Date/Time"
UniqueName
=
"Created"
DataType
=
"System.DateTime"
HeaderStyle-Width
=
"20%"
DataFormatString
=
"{0:MM/dd/yy hh:mm tt}"
/>
<
telerik:GridBoundColumn
DataField
=
"LastSentDateTime"
HeaderText
=
"Last Used"
UniqueName
=
"Sent"
DataType
=
"System.DateTime"
HeaderStyle-Width
=
"20%"
DataFormatString
=
"{0:MM/dd/yy hh:mm tt}"
/>
<
telerik:GridTemplateColumn
ItemStyle-HorizontalAlign
=
"Center"
HeaderStyle-HorizontalAlign
=
"Center"
HeaderStyle-Width
=
"30%"
HeaderText
=
"Message Type"
AllowFiltering
=
"false"
UniqueName
=
"MessageFormat"
SortExpression
=
"MessageFormat"
>
<
ItemTemplate
>
<
asp:ImageButton
ID
=
"ibtnPhone"
runat
=
"server"
ImageUrl
=
"~/Images/pc_icon_phone.gif"
CommandName
=
"ListenPhone"
CommandArgument
=
""
ToolTip
=
"Listen to message"
/>
<
asp:ImageButton
ID
=
"ibtnSMS"
runat
=
"server"
ImageUrl
=
"~/Images/pc_icon_txt.gif"
CommandName
=
"ViewSMS"
CommandArgument
=
""
ToolTip
=
"View SMS Message"
/>
</
ItemTemplate
>
<
HeaderStyle
HorizontalAlign
=
"Left"
/>
<
ItemStyle
HorizontalAlign
=
"Left"
/>
</
telerik:GridTemplateColumn
>
</
Columns
>
</
MasterTableView
>
<
ClientSettings
>
<
Selecting
AllowRowSelect
=
"True"
/>
<
ClientEvents
OnRowDblClick
=
"RowDblClick"
/>
<
Scrolling
AllowScroll
=
"True"
UseStaticHeaders
=
"True"
ScrollHeight
=
"135px"
/>
<
ClientEvents
OnScroll
=
"HandleScrolling"
/>
</
ClientSettings
>
</
telerik:RadGrid
>
Page that contains multiple Instances.
<
telerik:RadTabStrip
ID
=
"RadTabStrip1"
runat
=
"server"
MultiPageID
=
"RadMultiPage1"
SelectedIndex
=
"0"
CssClass
=
"tabStrip"
>
<
Tabs
>
<
telerik:RadTab
Text
=
"Messages"
>
</
telerik:RadTab
>
<
telerik:RadTab
Text
=
"Greetings"
Visible
=
"false"
>
</
telerik:RadTab
>
<
telerik:RadTab
Text
=
"Trailers"
Visible
=
"false"
>
</
telerik:RadTab
>
</
Tabs
>
</
telerik:RadTabStrip
>
<
telerik:RadMultiPage
ID
=
"RadMultiPage1"
runat
=
"server"
SelectedIndex
=
"0"
CssClass
=
"multiPage"
>
<
telerik:RadPageView
ID
=
"RadPageView1"
runat
=
"server"
>
<
ucMessages:Messages
ID
=
"ucMessages"
runat
=
"server"
/>
</
telerik:RadPageView
>
<
telerik:RadPageView
ID
=
"RadPageView3"
runat
=
"server"
>
<
ucMessages:Messages
ID
=
"ucGreetingMessages"
runat
=
"server"
/>
</
telerik:RadPageView
>
<
telerik:RadPageView
ID
=
"RadPageView4"
runat
=
"server"
>
<
ucMessages:Messages
ID
=
"ucTrailerMessages"
runat
=
"server"
/>
</
telerik:RadPageView
>
</
telerik:RadMultiPage
>