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> |