This is a migrated thread and some comments may be shown as answers.

Grid with LinQ with Selecting event

2 Answers 48 Views
Grid
This is a migrated thread and some comments may be shown as answers.
David Simmonds
Top achievements
Rank 1
David Simmonds asked on 30 Apr 2010, 07:02 PM
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> 
 

2 Answers, 1 is accepted

Sort by
0
David Simmonds
Top achievements
Rank 1
answered on 30 Apr 2010, 07:03 PM
I am also using the .NET 3.5 version of the Telerik.Web.UI component.
0
Tsvetoslav
Telerik team
answered on 05 May 2010, 11:10 AM
Hello David,

You need to set the Skin property of the RadAjaxLoadingPanel.

Hope it helps.

Regards,
Tsvetoslav
the Telerik team

Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items.
Tags
Grid
Asked by
David Simmonds
Top achievements
Rank 1
Answers by
David Simmonds
Top achievements
Rank 1
Tsvetoslav
Telerik team
Share this question
or