or
<telerik:RadAjaxManager ID="RadAjaxManager1" DefaultLoadingPanelID="RadAjaxLoadingPanel1" runat="server"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="prospectGrid"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="prospectGrid" /> </UpdatedControls> </telerik:AjaxSetting> <telerik:AjaxSetting AjaxControlID="RadAjaxManager1"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="prospectGrid" /> </UpdatedControls> </telerik:AjaxSetting> </telerik:RadAjaxManager><telerik:RadGrid ID="prospectGrid" AllowFilteringByColumn="true" AllowPaging="True" PageSize="50" runat="server" AllowSorting="true" OnNeedDataSource="prospectGrid_NeedDataSource" GridLines="None" AllowMultiRowSelection="false" Height="450px" OnItemDataBound="OnDataBound"> <PagerStyle Visible="false" /> <MasterTableView DataKeyNames="ID" TableLayout="Fixed" AutoGenerateColumns="false"> <Columns> <telerik:GridBoundColumn DataField="ID" HeaderText="ProspectId" Display="false" UniqueName="ProspectId" /> <telerik:GridTemplateColumn DataField="Live" HeaderText="Live" AllowFiltering="false" HeaderStyle-Width="30px"> <ItemTemplate> <center> <asp:Image ID="Image1" runat="server" ImageUrl="~/images/live.png" Visible='<%#Eval("Live") %>' /></center> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridBoundColumn DataField="PartnerCompany" HeaderText="Partner Company" UniqueName="PartnerCompany" /> <telerik:GridBoundColumn DataField="PersonName" HeaderText="Person Name" UniqueName="CustomerName" /> <telerik:GridBoundColumn DataField="ServiceType" HeaderText="Service Type" UniqueName="ServiceType" /> <telerik:GridBoundColumn DataField="PersonContact" HeaderText="Person Contact" UniqueName="Contact" /> <telerik:GridBoundColumn DataField="Title" HeaderText="Title" UniqueName="Title" /> <telerik:GridBoundColumn DataField="PersonDirectNumber" HeaderText="Person Direct No" UniqueName="Phone No" /> <telerik:GridBoundColumn DataField="PersonEmail" HeaderText="Person Email" UniqueName="Email" /> <telerik:GridBoundColumn DataField="FollowUpDate" HeaderText="FollowUp Date" UniqueName="FollowUpDate" /> <telerik:GridBoundColumn DataField="FollowUpDesc" HeaderText="Follow Up Desc" UniqueName="Description" /> <telerik:GridBoundColumn DataField="ContractETA" HeaderText="Contract ETA" UniqueName="CotnactETA" /> <telerik:GridBoundColumn DataField="ServiceETA" HeaderText="Service ETA" UniqueName="ServiceETA" /> <telerik:GridTemplateColumn DataField="NotesDesc" HeaderText="Notes" AllowFiltering="false" HeaderStyle-Width="55px"> <ItemTemplate> <center> <a href="#" onclick="notesClick('<%#DataBinder.Eval(Container.DataItem,"ID")%>'); return false;"> <input type="image" src="images/note.png" /></a></center> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn DataField="" HeaderText="Follow Up" AllowFiltering="false" HeaderStyle-Width="70px"> <ItemTemplate> <center> <asp:HyperLink ImageUrl="~/images/schedule.png" ID="schedule" runat="server" /> </center> </ItemTemplate> </telerik:GridTemplateColumn> </Columns> </MasterTableView> <ClientSettings EnableRowHoverStyle="true" Resizing-AllowColumnResize="true" EnablePostBackOnRowClick="false"> <ClientEvents OnRowDblClick="OnRowDblClick" /> <Selecting AllowRowSelect="false" /> <Scrolling AllowScroll="true" FrozenColumnsCount="3" UseStaticHeaders="true" SaveScrollPosition="true" /> <ClientEvents OnScroll="handleScrolling" /> </ClientSettings> <HeaderStyle Width="200px" /> </telerik:RadGrid><telerik:RadCodeBlock runat="server"> function handleScrolling(e) { var grid = $find("<%=prospectGrid.ClientID %>"); var scrollArea = document.getElementById("<%= prospectGrid.ClientID %>" + "_GridData"); if (IsScrolledToBottom(scrollArea)) { var currentlyDisplayedRecords = grid.get_masterTableView().get_pageSize() * (grid.get_masterTableView().get_currentPageIndex() + 1); //if the presently visible items are less than the entire source records count //trigger an ajax request to increase them if (currentlyDisplayedRecords < 30) { $find("<%= RadAjaxManager1.ClientID %>").ajaxRequest("LoadMoreRecords"); } } } //this method calculates whether you have reached the bottom when dragging the vertical grid scroll function IsScrolledToBottom(scrollArea) { var currentPosition = scrollArea.scrollTop + scrollArea.clientHeight; return currentPosition == scrollArea.scrollHeight; }</telerik:RadCodeBlock>protected void prospectGrid_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e) { prospectGrid.VirtualItemCount = DbContext.getProspectProfile(startRowIndex ,endRowIndex).ToList().Count(); int totalCount = prospectGrid.VirtualItemCount; int startRowIndex = (prospectGrid.CurrentPageIndex * prospectGrid.PageSize) + 1; int endRowIndex = ((startRowIndex + 15) > totalCount ? totalCount : startRowIndex + 15) - 1; prospectGrid.DataSource = DbContext.getProspectProfile(startRowIndex ,endRowIndex); }public class TestGrid : CompositeControl{ private readonly SearchCriteria searchCriteria = new SearchCriteria(); private RadGrid grid; /// <summary> /// Contains search criteria set from controls on the parent page. /// This is what drives exactly what is displayed in the grid, and /// only seems to be set just before PreRender. /// </summary> [Browsable(false)] public SearchCriteria SearchCriteria { get { return this.searchCriteria; } } protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); grid.DataSource = this.GetJobs(); grid.DataBind(); } protected override void OnInit(EventArgs e) { base.OnInit(e); this.EnsureChildControls(); } protected override void CreateChildControls() { this.Controls.Clear(); grid = new RadGrid { ID = "grid", DataSource = this.GetJobs(), AutoGenerateColumns = false, AllowPaging = true, ShowStatusBar = true, PageSize = 10, Height = this.Height, Width = this.Width }; grid.ClientSettings.Scrolling.AllowScroll = true; grid.MasterTableView.DataKeyNames = new[] { "BatchId" }; grid.Columns.Add(new GridBoundColumn { DataField = "PolicyNumber", HeaderText = "Policy Number" }); grid.Columns.Add(new GridBoundColumn { DataField = "Surname", HeaderText = "Surname" }); var detailTable = new GridTableView(grid) { DataKeyNames = new[] { "BatchId" }, DataSource = this.GetDocuments() }; detailTable.ParentTableRelation.Add(new GridRelationFields { DetailKeyField = "BatchId", MasterKeyField = "BatchId" }); detailTable.Columns.Add(new GridBoundColumn { DataField = "PolicyNumber", HeaderText = "Policy Number" }); detailTable.Columns.Add(new GridBoundColumn { DataField = "DocumentType", HeaderText = "Document Type" }); grid.MasterTableView.DetailTables.Add(detailTable); this.Controls.Add(grid); } private IEnumerable<Job> GetJobs() { // Snipped for brevity. } private IEnumerable<Document> GetDocuments() { // Snipped for brevity. }}protected void gv_ItemDataBound(object sender, GridItemEventArgs e)
{
var q = from result in db.sp_TempSearchCode_s("USEYN")
select new
{
TEXT = result.TEXT,
USE_YN = result.VALUE
};
if (e.Item is GridEditableItem && e.Item.IsInEditMode)
{
GridEditableItem item = (GridEditableItem)e.Item;
RadComboBox combo = (RadComboBox)item["UseYN"].Controls[0];
foreach (var items in q)
{
combo.Items.Add(new RadComboBoxItem(items.TEXT, items.USE_YN));
}
}
}