I have a grid that uses a LinqDataSource. The LinqDataSource uses the event Selecting to fill out the data retrieved. All works fine except that even though I am using a RadAjaxManager the grid still "blinks" when I use the paging controls instead of how the 300,000 row Telerik demo works. Will I not be able to accomplish that with the way I am doing it? My Linq query is a join. I have attached the code I use. If anyone has any tips, please let me know. I like the way the demo handles the postbacks.
| using System; |
| using System.Collections; |
| using System.Collections.Generic; |
| using System.Linq; |
| using System.Web; |
| using System.Web.UI; |
| using System.Web.UI.WebControls; |
| using System.Data; |
| using System.Data.Sql; |
| using System.Data.SqlClient; |
| using System.Diagnostics; |
| using System.Transactions; |
| using Infragistics.WebUI.UltraWebGrid; |
| using Infragistics.WebUI.UltraWebNavigator; |
| using Infragistics.WebUI.WebDataInput; |
| using Telerik.Web.UI; |
| namespace CharityCheck |
| { |
| public partial class Registrations : CharityCheck.MyPage |
| { |
| int m_nType = -1; |
| String m_strMemberStatus = ""; |
| protected void Page_Load(object sender, EventArgs e) |
| { |
| Master.Menu.MenuItemClicked += new MenuItemClickedEventHandler(Menu_MenuItemClicked); |
| m_strMemberStatus = Session["Registrations:MemberStatus"].ToString(); |
| m_nType = Convert.ToInt32(Session["Registrations:Type"]); |
| Master.Heading = String.Format("{0} ({1})", |
| Session["Registrations:Heading"].ToString(), |
| m_strMemberStatus); |
| if (!IsPostBack || Session["MenuSelected"] != null) |
| { |
| if (Session["Registrations:SearchBy"] != null) |
| { |
| WebTextEdit1.Text = Session["Registrations:SearchBy"].ToString(); |
| checkBoxExact.Checked = Convert.ToBoolean(Session["Registrations:Exact"]); |
| RadComboBoxSearchBy.SelectedValue = Session["Registrations:Search"].ToString(); |
| RadGrid1.DataSourceID = Session["Registrations:DataSourceID"].ToString(); |
| RadGrid1.DataBind(); |
| } |
| Session["MenuSelected"] = null; |
| Session["Registrations:SearchBy"] = null; |
| Session["Registrations:Exact"] = null; |
| Session["Registrations:Search"] = null; |
| Session["Registrations:DataSourceID"] = null; |
| } |
| } |
| void Menu_MenuItemClicked(object sender, WebMenuItemEventArgs e) |
| { |
| if (e.Item.Text == "Back") |
| { |
| Session["Programmatic"] = true; |
| Response.Redirect("/Admin/AdminDefault.aspx"); |
| } |
| } |
| protected void RadGrid1_ItemCommand(object source, Telerik.Web.UI.GridCommandEventArgs e) |
| { |
| if (e.Item is GridDataItem) |
| { |
| GridDataItem dataItem = e.Item as GridDataItem; |
| dataItem.Selected = true; |
| int nID = Convert.ToInt32(dataItem["ID"].Text); |
| CellClick(e.CommandName, nID, e); |
| } |
| } |
| protected void CellClick(string strName, int nID, Telerik.Web.UI.GridCommandEventArgs e) |
| { |
| switch (strName) |
| { |
| case "Profile": |
| Session["Registrations:SearchBy"] = WebTextEdit1.Text.Trim(); |
| Session["Registrations:Exact"] = checkBoxExact.Checked; |
| Session["Registrations:DataSourceID"] = RadGrid1.DataSourceID; |
| Session["Registrations:Search"] = RadComboBoxSearchBy.SelectedValue; |
| switch (m_nType) |
| { |
| case 0: // Charities |
| case 1: // Professional Fundraisers |
| Session["Programmatic"] = true; |
| Session["ProfessionalFundraiserGeneralInfo:CompanyID"] = nID; |
| Session["ProfessionalFundraiserGeneralInfo:Type"] = Utility.GetType(m_nType); |
| Response.Redirect("~/Admin/ProfessionalFundraiserGeneralInfo.aspx"); |
| //RedirectSavingPageState("~/Admin/ProfessionalFundraiserGeneralInfo.aspx"); |
| break; |
| case 2: // Casino Operators |
| Session["Programmatic"] = true; |
| Session["CasinoGeneralInfo:CompanyID"] = nID; |
| Response.Redirect("~/Admin/CasinoGeneralInfo.aspx"); |
| //RedirectSavingPageState("~/Admin/CasinoGeneralInfo.aspx"); |
| break; |
| case 3: // Lottery Operators |
| Session["Programmatic"] = true; |
| Session["LotteryGeneralInfo:CompanyID"] = nID; |
| Response.Redirect("~/Admin/LotteryGeneralInfo.aspx"); |
| //RedirectSavingPageState("~/Admin/LotteryGeneralInfo.aspx"); |
| break; |
| case 4: // Awareness Publishers |
| Session["Programmatic"] = true; |
| Session["PublishersGeneralInfo:CompanyID"] = nID; |
| Response.Redirect("~/Admin/PublishersGeneralInfo.aspx"); |
| //RedirectSavingPageState("~/Admin/PublishersGeneralInfo.aspx"); |
| break; |
| case 5: // Telemarketers |
| Session["Programmatic"] = true; |
| Session["TelemarketingGeneralInfo:CompanyID"] = nID; |
| Response.Redirect("~/Admin/TelemarketingGeneralInfo.aspx"); |
| //RedirectSavingPageState("~/Admin/TelemarketingGeneralInfo.aspx"); |
| break; |
| case 6: // Business |
| Session["Programmatic"] = true; |
| Session["BusinessGeneralInfo:CompanyID"] = nID; |
| Response.Redirect("~/Admin/BusinessGeneralInfo.aspx"); |
| //RedirectSavingPageState("~/Admin/BusinessGeneralInfo.aspx"); |
| break; |
| case 7: // Residential |
| Session["Programmatic"] = true; |
| Session["ResidentialGeneralInfo:CompanyID"] = nID; |
| Response.Redirect("~/Admin/ResidentialGeneralInfo.aspx"); |
| //RedirectSavingPageState("~/Admin/ResidentialGeneralInfo.aspx"); |
| break; |
| } |
| break; |
| case "Report": |
| break; |
| } |
| } |
| protected void RadGrid1_DeleteCommand(object source, GridCommandEventArgs e) |
| { |
| GridDataItem dataItem = e.Item as GridDataItem; |
| dataItem.Selected = true; |
| int nID = Convert.ToInt32(dataItem.GetDataKeyValue("ID")); |
| using (TransactionScope scope = new TransactionScope()) |
| { |
| using (CharityCheckEntities context = new CharityCheckEntities()) |
| { |
| FundraisingActivity.DeleteByCompanyID(nID, context); |
| PublisherFundraiserActivity.DeleteByCompanyID(nID, context); |
| TelemarketingBusinessActivity.DeleteByCompanyID(nID, context); |
| CasinoFundraisingActivity.DeleteByCompanyID(nID, context); |
| LotteryFundraisingActivity.DeleteByCompanyID(nID, context); |
| IncomeStatement.DeleteByCompanyID(nID, context); |
| BalanceSheet.DeleteByCompanyID(nID, context); |
| StatementOfCashFlow.DeleteByCompanyID(nID, context); |
| SolicitantNotes.DeleteByCompanyID(nID, context); |
| BusinessRecommendations.DeleteByCompanyID(nID, context); |
| JobPostings.DeleteByCompanyID(nID, context); |
| Files.DeleteByCompanyID(nID, context); |
| RequestedReports.DeleteByCompanyID(nID, context); |
| SponsoredCharitableReports.DeleteByCompanyID(nID, context); |
| Company.DeleteByID(nID, context); |
| context.SaveChanges(); |
| scope.Complete(); |
| } |
| } |
| } |
| protected void LinqDataSource1_Selecting(object sender, LinqDataSourceSelectEventArgs e) |
| { |
| String strSearch = WebTextEdit1.Text.Trim(); |
| String strType = Utility.GetType(m_nType); |
| CharityCheckEntities entities = new CharityCheckEntities(); |
| var data = from company in entities.CompanySet |
| from user in entities.UserSet |
| where company.ID == user.CompanyID && |
| company.MemberStatus == m_strMemberStatus && |
| company.Type == strType && |
| ((RadComboBoxSearchBy.SelectedValue == null || RadComboBoxSearchBy.SelectedValue == "Name") |
| ? ((strSearch.Length != 0) |
| ? checkBoxExact.Checked |
| ? company.CompanyName == strSearch |
| : company.CompanyName.StartsWith(strSearch) |
| : true) |
| : ((strSearch.Length != 0) |
| ? checkBoxExact.Checked |
| ? user.MemberID == strSearch |
| : user.MemberID.StartsWith(strSearch) |
| : true)) |
| orderby company.CompanyName |
| select new |
| { |
| company.ID, |
| company.CompanyName, |
| RegistrationDate=company.RegistrationDate, |
| user.Phone, |
| user.FullName, |
| company.Type, |
| }; |
| e.Result = data; |
| e.Arguments.TotalRowCount = data.Count(); |
| } |
| } |
| } |
| <%@ Page Title="" Language="C#" MasterPageFile="~/NestedMasterPage2.master" AutoEventWireup="true" CodeBehind="Registrations.aspx.cs" Inherits="CharityCheck.Registrations" %> |
| <%@ MasterType virtualpath="~/NestedMasterPage2.master" %> |
| <%@ Register tagprefix="igtxt" namespace="Infragistics.WebUI.WebDataInput" Assembly="Infragistics35.WebUI.WebDataInput.v10.1, Version=10.1.20101.1011, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb" %> |
| <%@ Register tagprefix="igcmbo" namespace="Infragistics.WebUI.WebCombo" Assembly="Infragistics35.WebUI.WebCombo.v10.1, Version=10.1.20101.1011, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb" %> |
| <%@ Register tagprefix="ig" namespace="Infragistics.Web.UI.ListControls" Assembly="Infragistics35.Web.v10.1, Version=10.1.20101.1011, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb" %> |
| <%@ Register tagprefix="iglist" namespace="Infragistics.Web.UI.ListControls" Assembly="Infragistics35.Web.v10.1, Version=10.1.20101.1011, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb" %> |
| <%@ Register assembly="Telerik.Web.UI" namespace="Telerik.Web.UI" tagprefix="telerik" %> |
| <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> |
| <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server"> |
| <script type="text/javascript" id="igClientScript1"> |
| var RadGrid1; |
| function GetGridObject(sender, eventArgs) { |
| RadGrid1 = sender; |
| } |
| function webImageButtonSearch_Click(oButton, oEvent) { |
| RadGrid1.get_masterTableView().rebind(); |
| } |
| </script> |
| </telerik:RadCodeBlock> |
| <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" > |
| <AjaxSettings> |
| <telerik:AjaxSetting AjaxControlID="webImageButtonSearch"> |
| <UpdatedControls> |
| <telerik:AjaxUpdatedControl ControlID="webImageButtonSearch" /> |
| <telerik:AjaxUpdatedControl ControlID="RadGrid1" LoadingPanelID="RadAjaxLoadingPanel1" /> |
| </UpdatedControls> |
| </telerik:AjaxSetting> |
| <telerik:AjaxSetting AjaxControlID="RadGrid1"> |
| <UpdatedControls> |
| <telerik:AjaxUpdatedControl ControlID="RadGrid1" LoadingPanelID="RadAjaxLoadingPanel1" /> |
| </UpdatedControls> |
| </telerik:AjaxSetting> |
| </AjaxSettings> |
| </telerik:RadAjaxManager> |
| <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" /> |
| <table> |
| <tr> |
| <td valign="middle"> |
| <asp:Label ID="Label1" runat="server" Text="Search By:" CssClass="aLabel"></asp:Label> |
| </td> |
| <td valign="middle"> |
| <telerik:RadComboBox ID="RadComboBoxSearchBy" runat="server" width="90px" |
| MarkFirstMatch="True" |
| Skin="Vista" TabIndex="1" CausesValidation="False" |
| ToolTip="Choose how to search, either by Name or by Member ID." > |
| <Items> |
| <telerik:RadComboBoxItem runat="server" Text="Name" Value="Name" /> |
| <telerik:RadComboBoxItem runat="server" Text="Member ID" Value="Member ID" /> |
| </Items> |
| </telerik:RadComboBox> |
| </td> |
| <td valign="middle"> |
| <igtxt:WebTextEdit ID="WebTextEdit1" runat="server" Width="360px" TabIndex="2" ToolTip="Enter the criteria to search by."> |
| </igtxt:WebTextEdit> |
| </td> |
| <td> |
| <igtxt:WebImageButton ID="webImageButtonSearch" runat="server" |
| ImageDirectory="~/Images" |
| Text="Search" CausesValidation="False" TabIndex="3" |
| ToolTip="Click this button to start the search." AutoSubmit="False" > |
| <ClientSideEvents Click="webImageButtonSearch_Click" /> |
| <Appearance> |
| <Image Url="../Images/Search-16x16.png" /> |
| </Appearance> |
| </igtxt:WebImageButton> |
| </td> |
| <td> |
| <asp:CheckBox ID="checkBoxExact" runat="server" Text="Exact" |
| TextAlign="Left" CssClass="aCheckBox" TabIndex="4" ToolTip="Checking this will cause the search to find the information exactly the way it was typed. Otherwise, the search will find anything that contains the criteria." /> |
| </td> |
| </tr> |
| </table> |
| <telerik:RadGrid ID="RadGrid1" runat="server" allowpaging="True" |
| datasourceid="LinqDataSource1" gridlines="None" showfooter="True" |
| onitemcommand="RadGrid1_ItemCommand" |
| allowautomaticdeletes="True" autogeneratecolumns="False" |
| ondeletecommand="RadGrid1_DeleteCommand" |
| skin="Office2007" > |
| <MasterTableView tablelayout="Fixed" datasourceid="LinqDataSource1" > |
| <Columns> |
| <telerik:GridBoundColumn DataField="CompanyName" DefaultInsertValue="" |
| HeaderText="Company Name" SortExpression="CompanyName" |
| UniqueName="CompanyName"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn DataField="FullName" DefaultInsertValue="" |
| HeaderText="Contact Name" SortExpression="FullName" |
| UniqueName="FullName"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn DataField="Phone" DefaultInsertValue="" |
| HeaderText="Phone" SortExpression="Phone" |
| UniqueName="Phone"> |
| </telerik:GridBoundColumn> |
| <telerik:GridDateTimeColumn DataField="RegistrationDate" DefaultInsertValue="" |
| HeaderText="Registration Date" ReadOnly="True" SortExpression="RegistrationDate" |
| DataFormatString="{0:d}" |
| UniqueName="RegistrationDate" > |
| <HeaderStyle Width="105px" /> |
| </telerik:GridDateTimeColumn> |
| <telerik:GridButtonColumn ButtonType="ImageButton" CommandName="Profile" |
| ImageUrl="~/Images/Profile-16x16.png" Text="Go to the General Information Page" UniqueName="Profile"> |
| <HeaderStyle Width="20px" /> |
| <ItemStyle HorizontalAlign="Center" CssClass="MyImageButton" /> |
| </telerik:GridButtonColumn> |
| <telerik:GridButtonColumn ButtonType="ImageButton" CommandName="Reports" |
| ImageUrl="~/Images/Reports-16x16.png" Text="Reports" UniqueName="Reports"> |
| <HeaderStyle Width="20px" /> |
| <ItemStyle HorizontalAlign="Center" CssClass="MyImageButton" /> |
| </telerik:GridButtonColumn> |
| <telerik:GridButtonColumn ButtonType="ImageButton" CommandName="Delete" |
| ImageUrl="~/Images/Delete-16x16.png" Text="Delete this company" UniqueName="Delete" |
| ConfirmText="Delete this company?" ConfirmDialogType="RadWindow" |
| ConfirmTitle="Delete"> |
| <HeaderStyle Width="20px" /> |
| <ItemStyle HorizontalAlign="Center" CssClass="MyImageButton" /> |
| </telerik:GridButtonColumn> |
| <telerik:GridBoundColumn DataField="ID" DefaultInsertValue="" Visible="false" |
| HeaderText="ID" SortExpression="ID" UniqueName="ID" |
| DataType="System.Int32" ReadOnly="True"> |
| </telerik:GridBoundColumn> |
| </Columns> |
| </MasterTableView> |
| <ClientSettings> |
| <Selecting AllowRowSelect="true" /> |
| <ClientEvents OnGridCreated="GetGridObject"></ClientEvents> |
| </ClientSettings> |
| <PagerStyle Position="TopAndBottom" /> |
| </telerik:RadGrid> |
| <asp:LinqDataSource ID="LinqDataSource1" runat="server" |
| AutoPage="False" ContextTypeName="CharityCheck.CharityCheckEntities" |
| onselecting="LinqDataSource1_Selecting" |
| TableName="CompanySet"> |
| </asp:LinqDataSource> |
| </asp:Content> |