Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: C# ASP.NET Gridview session , +
Let me explain you my problem in short.
I have a grid that shows data of car's. I have paging and each page shows 5 records. I get the combination of selected car models, mileage, KM run, Cost etc. Basically the result depends on the search criteria. All of this is stored in session and the value is retrieved from the session and passed to the a query.
Everything works fine on my local machine but on live server paging doesn't work on IE.

Here is How my Grid looks.
 
<asp:GridView ID="grdCarSearch" runat="server" AutoGenerateColumns="False" onrowdatabound="grdCarSearch_RowDataBound"
                             PageSize="5" AllowPaging="True" onrowcommand="grdCarSearch_RowCommand"
                             onpageindexchanging="grdCarSearch_PageIndexChanging"
                             Width="100%">
                             <Columns>
 
                             <asp:TemplateField HeaderText="SN" ItemStyle-VerticalAlign="Top">
                               <ItemTemplate><asp:Label ID="lblPSerial" runat="server"><%#Container.DataItemIndex+1 %></asp:Label></ItemTemplate>
                             </asp:TemplateField>
 
                             <asp:BoundField datafield="Car_ID" HeaderStyle-BackColor="#f0f0f0" HeaderText="" ItemStyle-VerticalAlign="Top">
                             <HeaderStyle CssClass="grid"></HeaderStyle></asp:BoundField>
 
                             <asp:TemplateField >
                                   <ItemTemplate>
                                   <!-- Table Within Grid Strted Here-->
                                     <table width="90%" cellspacing="1" cellpadding="1" border="0">
                                        <tr>
                                            <td bgcolor="#ffffff" >
 
                                           <!-- Sub TAble Within Grid -->
                                            <table width="90%" cellspacing="0" cellpadding="0" border="0">
                                               <tr>
                                                   <!-- first colomn including car image started here -->
                                                   <td width="220" >
                                                       <table width="100%" cellspacing="2" cellpadding="2" border="0">
                                                            <tr><td width="200px" height="120px" ><asp:Image ID="imgCar" Width="200px"  runat="server" AlternateText="" /></td><td>&nbsp;</td></tr>
                                                            <tr><td><asp:ImageButton ID="ZoomImageBtn" runat="server" ImageUrl="images/icon_zoom.gif" OnClientClick=<%#"window.open('ZoomImage.aspx?Car_ID="+ Eval("Car_ID")+ "',null,'width=450,height=350,top=100,left=10','true');" %> /></td></tr>
                                                        </table>
                                                    </td>
                                                    <!-- first colomn including car image closed here -->
 
                                                    <!-- second Column including car detail started here  -->
                                                    <td valign="top">
                                                        <table width="100%" cellspacing="0" cellpadding="0" border="0" class="normal alltoleft" style="font-size:11px;">
 
                                                            <tr>
                                                                <td style="font-weight:bold; font-size:30" colspan="3" Height="50">
                                                                    <asp:Label ID="lblCarName" runat="server" Text='<%#Eval("Car_Name")%>'></asp:Label>
                                                                </td>
                                                            </tr>
 
                                                            <tr><td>Registration</td><td width="14"> : </td><td width="421"><%#Eval("Car_RegistrationDate") %></td></tr>
 
                                                            <tr><td>Mileage</td><td> :</td> <td> <%#Eval("Mileage_Id")%></td></tr>
 
                                                            <tr><td>Colour</td>  <td> :</td><td> <%#Eval("Car_Colour")%></td></tr>
 
                                                            <tr><td>Trim</td>  <td> :</td><td> <%#Eval("Car_Trim")%></td></tr>
 
                                                            <tr><td>Price</td> <td> :</td><td> <%#Eval("Car_Price")%></td></tr>
 
                                                            <tr><td>Dealer</td><td> :</td><td> <%#Eval("Dealer_Name")%></td></tr>
 
                                                        </table>
                                                    </td>
                                                    <!-- second Column of car detail closed here -->
 
                                                  </tr>
                                             </table>
                                             <!-- Sub Table Within Grid -->
 
                                          </td>
                                        </tr>
                                     </table>
                                     <!-- Table within Grid Closed HEre-->
                                   </ItemTemplate>
                                </asp:TemplateField>
 
                                <asp:TemplateField ItemStyle-VerticalAlign="Top">
                                    <ItemTemplate >
                                        <asp:ImageButton ID="imgbtnMoreInfo" CommandArgument='<%#Eval("Car_ID") %>' CommandName="MoreInfo" ImageUrl="~/images/butt_moreinfo.gif" runat="server" CausesValidation="false" PostBackUrl='<%#String.Format("CarMoreInfo.aspx?Car_ID={0}",Eval("Car_ID"))%>' /><br />
                                        <asp:ImageButton ID="imgbtnContactDealer" CommandArgument='<%#Eval("Car_ID") %>' CommandName="ContactDealer" runat="server" ImageUrl="~/images/butt_contactdealer.gif" CausesValidation="false" PostBackUrl='<%#String.Format("ContactDealer.aspx?Car_ID={0}",Eval("Car_ID"))%>' /><br />
                                        <asp:ImageButton ID="imgbtnEmailAFriend" CommandArgument='<%#Eval("Car_ID") %>' CommandName="EmailFriend" runat="server" ImageUrl="~/images/butt_emailafriend.gif" CausesValidation="false" PostBackUrl='<%#String.Format("EmailFriend.aspx?Car_ID={0}",Eval("Car_ID"))%>' />
                                    </ItemTemplate>
                                </asp:TemplateField>
 
                            </Columns>
                            </asp:GridView>
 
Here is my .CS file
protected void grdCarSearch_PageIndexChanging(object sender, GridViewPageEventArgs e)
   {
      
       grdCarSearch.EditIndex = -1;
       grdCarSearch.PageIndex = e.NewPageIndex;
       grdCarSearch.DataBind();
       bindGrid();
 
   }
public void bindGrid()
    {
        try
        {
            DataTable dt = new DataTable();
            dt = _BusinessLayer.getSingleRecord(getQuery());
            grdCarSearch.DataSource = dt;
            grdCarSearch.DataBind();
 
            if (dt.Rows.Count == 0)
            {
                lblgrdempt.Visible = true;
            }
        }
        catch (Exception ex)
        {
 
        }
    }
 
protected void Page_Load(object sender, EventArgs e)
   {
       try
       {
           Response.Cache.SetCacheability(HttpCacheability.NoCache);
           Dealer_Id = Request.QueryString["Dealer_Id"].ToString();
 
           // retrive value of session
           DealerId = Convert.ToString(Session["DealerId"]);
           StateId = Convert.ToString(Session["StateId"]);
           DriveTrain = Convert.ToString(Session["DriveTrain"]);
           Mileage = Convert.ToString(Session["Mileage"]);
           PriceFrom = Convert.ToString(Session["PriceFrom"]);
           PriceTo = Convert.ToString(Session["PriceTo"]);
 
           // retrive car class
           CarSaloonClass = (ArrayList)Session["CarSaloonClass"];
           CarCoupeClass = (ArrayList)Session["CarCoupeClass"];
           CarCabrioletClass = (ArrayList)Session["CarCabrioletClass"];
           CarOffRoaderClass = (ArrayList)Session["CarOffRoaderClass"];
           CarTourerClass = (ArrayList)Session["CarTourerClass"];
           CarSpecialityCarsClass = (ArrayList)Session["CarSpecialityCarsClass"];
 
           // retrive car model
           CarSaloonModel = Convert.ToString(Session["CarSaloonModel"]);
           CarCoupeModel = Convert.ToString(Session["CarCoupeModel"]);
           CarCabrioletModel = Convert.ToString(Session["CarCabrioletModel"]);
           CarOffRoaderModel = Convert.ToString(Session["CarOffRoaderModel"]);
           CarTourerModel = Convert.ToString(Session["CarTourerModel"]);
           CarSpecialityCarsModel = Convert.ToString(Session["CarSpecialityCarsModel"]);
       }
       catch (Exception ex)
       {
 
       }
       if (!IsPostBack)
       {
           bindGrid();
       }
   }
 
private string getQuery()
    {
            string query = null;
 
            query = "SELECT dbo.Car_Master.Car_ID, dbo.Car_Master.Car_Name, dbo.Car_Master.CarModel_Id, dbo.Car_Master.Car_Type, dbo.Car_Master.Car_Drain, dbo.Dealer_Master.Dealer_Name, dbo.Car_Master.Car_RegistrationDate, dbo.Car_Master.Mileage_Id, dbo.Car_Master.Car_Colour, dbo.Car_Master.Car_Trim, dbo.Car_Master.Car_Price, dbo.Car_Master.Transmission, dbo.Car_Master.Car_EngineSize, dbo.Car_Master.Car_StylingLine, dbo.Car_Master.Car_DealerID, dbo.Car_Master.car_SaleStatus, dbo.Car_Master.Car_LastUpdated, dbo.CarModel_master.Car_Model, dbo.CarClass_Master.Class_ID, dbo.CarClass_Master.Class_Type, dbo.Dealer_Master.Dealer_State, dbo.State_Master.State_ID, dbo.State_Master.State_Name FROM dbo.Car_Master INNER JOIN dbo.CarModel_master ON dbo.Car_Master.CarModel_Id = dbo.CarModel_master.CarModel_Id INNER JOIN dbo.CarClass_Master ON dbo.Car_Master.Car_Type = dbo.CarClass_Master.Class_ID INNER JOIN dbo.Dealer_Master ON dbo.Car_Master.Car_DealerID = dbo.Dealer_Master.Dealer_ID INNER JOIN dbo.State_Master ON dbo.Dealer_Master.Dealer_State = dbo.State_Master.State_ID WHERE (dbo.Car_Master.car_SaleStatus <> 'Sold')";
 
            // where query for Dealer drop down
            if (DealerId == "0")
            {
                query = query + "";
            }
            else if (DealerId != "0")
            {
                query = query + " and dbo.Car_Master.Car_DealerID= '" + DealerId + "'";
            }
 
            // where query for state drop down
            if (StateId != "Select")
            {
                query = query + " and dbo.State_Master.State_ID= '" + StateId + "'";
            }            
 
            // where query for Drive drop down
            if (DriveTrain != "-Select-")
            {
                query = query + " and dbo.Car_Master.Car_Drain= '" + DriveTrain + "'";
            }
 
            // where query for Mileage drop down
            if (Mileage != "-Any-")
            {
                string symbol = Mileage.Substring(0, 1);
                string digit = Mileage.Substring(1, Mileage.Length - 1);
                string digitonly = digit.Replace(",", "");
 
                if (symbol == ">")
                {
                    query = query + " and dbo.Car_Master.Mileage_Id > '" + digitonly + "'";
                }
 
                else if (symbol == "<")
                {
                    query = query + " and dbo.Car_Master.Mileage_Id < '" + digitonly + "'";
                }
            }
 
            // where query for prize drop down
            if (PriceFrom != "Any" && PriceTo == "Any")
            {
                string exactprice = PriceFrom.Substring(3, PriceFrom.Length - 3);
                string exactDigitOnly = exactprice.Replace(",", "");
 
                query = query + " and dbo.Car_Master.Car_Price <= '" + exactDigitOnly + "'";
            }
 
            else if (PriceTo != "Any" && PriceFrom == "Any")
            {
                string exactprice = PriceTo.Substring(3, PriceTo.Length - 3);
                string exactDigitOnly = exactprice.Replace(",", "");
 
                query = query + " and dbo.Car_Master.Car_Price >= '" + exactDigitOnly + "'";
            }
 
            else if (PriceFrom != "Any" && PriceTo != "Any")
            {
                string exactpriceFrom = PriceFrom.Substring(3, PriceFrom.Length - 3);
                string exactDigitOnlyFrom = exactpriceFrom.Replace(",", "");
 
                string exactpriceTo = PriceTo.Substring(3, PriceTo.Length - 3);
                string exactDigitOnlyTo = exactpriceTo.Replace(",", "");
 
                query = query + "and dbo.Car_Master.Car_Price between '" + exactDigitOnlyFrom + "' and '" + exactDigitOnlyTo + "'";
            }
 
            // where query for checkbox and get car class and car model for saloon
            if (CarSaloonModel != "")
            {
                int flag = 0;
 
                DataTable dtCarSaloonClass = new DataTable();
                DataTable dtCarSaloonModel = new DataTable();
 
                dtCarSaloonModel = _BusinessLayer.getSingleRecord("select * from CarModel_master where Car_Model ='" + CarSaloonModel + "'");
                int CarSaloonModelID = Convert.ToInt32(dtCarSaloonModel.Rows[0]["CarModel_Id"]);
 
                foreach (string SaloonClass in CarSaloonClass)
                {
                    dtCarSaloonClass = _BusinessLayer.getSingleRecord("select * from CarClass_Master where Class_Type='" + SaloonClass + "'");
                    int CarSaloonClassID = Convert.ToInt32(dtCarSaloonClass.Rows[0]["Class_ID"]);
 
                    if (flag == 0)
                    {
                        query = query + " and dbo.Car_Master.Car_Type = '" + CarSaloonClassID + "' and dbo.Car_Master.CarModel_Id = '" + CarSaloonModelID + "'";
                    }
 
                    if (flag == 1)
                    {
                        query = query + " or dbo.Car_Master.Car_Type = '" + CarSaloonClassID + "' and dbo.Car_Master.CarModel_Id = '" + CarSaloonModelID + "'";
                    }
 
                    flag = 1;
                }
            }
 
            // where query for checkbox and get car class and car model for Coupe
            if (CarCoupeModel != "")
            {
                int flag = 0;
 
                DataTable dtCarCoupeClass = new DataTable();
                DataTable dtCarCoupeModel = new DataTable();
 
                dtCarCoupeModel = _BusinessLayer.getSingleRecord("select * from CarModel_master where Car_Model ='" + CarCoupeModel + "'");
                int CarCoupeModelID = Convert.ToInt32(dtCarCoupeModel.Rows[0]["CarModel_Id"]);
 
                foreach (string CoupeClass in CarCoupeClass)
                {
                    dtCarCoupeClass = _BusinessLayer.getSingleRecord("select * from CarClass_Master where Class_Type='" + CoupeClass + "'");
                    int CarCoupeClassID = Convert.ToInt32(dtCarCoupeClass.Rows[0]["Class_ID"]);
 
                    if (CarSaloonModel != "")
                        query = query + " or dbo.Car_Master.Car_Type = '" + CarCoupeClassID + "' and dbo.Car_Master.CarModel_Id = '" + CarCoupeModelID + "'";
 
                    if (CarSaloonModel == "")
                    {
                        if (flag == 0)
                        {
                            query = query + " and dbo.Car_Master.Car_Type = '" + CarCoupeClassID + "' and dbo.Car_Master.CarModel_Id = '" + CarCoupeModelID + "'";
                        }
 
                        if (flag == 1)
                        {
                            query = query + " or dbo.Car_Master.Car_Type = '" + CarCoupeClassID + "' and dbo.Car_Master.CarModel_Id = '" + CarCoupeModelID + "'";
                        }
                    }
 
                    flag = 1;
                }
            }
 
            // where query for checkbox and get car class and car model for Cabriolet
            if (CarCabrioletModel != "")
            {
                int flag = 0;
 
                DataTable dtCarCabrioletClass = new DataTable();
                DataTable dtCarCabrioletModel = new DataTable();
 
                dtCarCabrioletModel = _BusinessLayer.getSingleRecord("select * from CarModel_master where Car_Model ='" + CarCabrioletModel + "'");
                int CarCabrioletModelID = Convert.ToInt32(dtCarCabrioletModel.Rows[0]["CarModel_Id"]);
 
                foreach (string CabrioletClass in CarCabrioletClass)
                {
 
                    dtCarCabrioletClass = _BusinessLayer.getSingleRecord("select * from CarClass_Master where Class_Type='" + CabrioletClass + "'");
                    int CarCabrioletClassID = Convert.ToInt32(dtCarCabrioletClass.Rows[0]["Class_ID"]);
 
                    if (CarSaloonModel != "" || CarCoupeModel != "")
                        query = query + " or dbo.Car_Master.Car_Type = '" + CarCabrioletClassID + "' and dbo.Car_Master.CarModel_Id = '" + CarCabrioletModelID + "'";
 
                    if (CarSaloonModel == "" && CarCoupeModel == "")
                    {
                        if (flag == 0)
                        {
                            query = query + " and dbo.Car_Master.Car_Type = '" + CarCabrioletClassID + "' and dbo.Car_Master.CarModel_Id = '" + CarCabrioletModelID + "'";
                        }
 
                        if (flag == 1)
                        {
                            query = query + " or dbo.Car_Master.Car_Type = '" + CarCabrioletClassID + "' and dbo.Car_Master.CarModel_Id = '" + CarCabrioletModelID + "'";
                        }
                    }
                    flag = 1;
                }
            }
 
            // where query for checkbox and get car class and car model for OffRoader
            if (CarOffRoaderModel != "")
            {
                int flag = 0;
 
                DataTable dtCarOffRoaderClass = new DataTable();
                DataTable dtCarOffRoaderModel = new DataTable();
 
                dtCarOffRoaderModel = _BusinessLayer.getSingleRecord("select * from CarModel_master where Car_Model ='" + CarOffRoaderModel + "'");
                int CarOffRoaderModelID = Convert.ToInt32(dtCarOffRoaderModel.Rows[0]["CarModel_Id"]);
 
                foreach (string OffRoader in CarOffRoaderClass)
                {
                    dtCarOffRoaderClass = _BusinessLayer.getSingleRecord("select * from CarClass_Master where Class_Type='" + OffRoader + "'");
                    int CarOffRoaderClassID = Convert.ToInt32(dtCarOffRoaderClass.Rows[0]["Class_ID"]);
 
                    if (CarSaloonModel != "" || CarCoupeModel != "" || CarCabrioletModel != "")
                        query = query + " or dbo.Car_Master.Car_Type = '" + CarOffRoaderClassID + "' and dbo.Car_Master.CarModel_Id = '" + CarOffRoaderModelID + "'";
 
                    if (CarSaloonModel == "" && CarCoupeModel == "" && CarCabrioletModel == "")
                    {
                        if (flag == 0)
                        {
                            query = query + " and dbo.Car_Master.Car_Type = '" + CarOffRoaderClassID + "' and dbo.Car_Master.CarModel_Id = '" + CarOffRoaderModelID + "'";
                        }
 
                        if (flag == 1)
                        {
                            query = query + " or dbo.Car_Master.Car_Type = '" + CarOffRoaderClassID + "' and dbo.Car_Master.CarModel_Id = '" + CarOffRoaderModelID + "'";
                        }
                    }
 
                    flag = 1;
                }
            }
 
            // where query for checkbox and get car class and car model for Tourer
            if (CarTourerModel != "")
            {
                int flag = 0;
 
                DataTable dtCarTourerClass = new DataTable();
                DataTable dtCarTourerModel = new DataTable();
 
                dtCarTourerModel = _BusinessLayer.getSingleRecord("select * from CarModel_master where Car_Model ='" + CarTourerModel + "'");
                int CarTourerModelID = Convert.ToInt32(dtCarTourerModel.Rows[0]["CarModel_Id"]);
 
                foreach (string TourerClass in CarTourerClass)
                {
                    dtCarTourerClass = _BusinessLayer.getSingleRecord("select * from CarClass_Master where Class_Type='" + TourerClass + "'");
                    int CarTourerClassID = Convert.ToInt32(dtCarTourerClass.Rows[0]["Class_ID"]);
 
                    if (CarSaloonModel != "" || CarCoupeModel != "" || CarCabrioletModel != "" || CarOffRoaderModel != "")
                        query = query + " or dbo.Car_Master.Car_Type = '" + CarTourerClassID + "' and dbo.Car_Master.CarModel_Id = '" + CarTourerModelID + "'";
 
                    if (CarSaloonModel == "" && CarCoupeModel == "" && CarCabrioletModel == "" && CarOffRoaderModel == "")
                    {
                        if (flag == 0)
                        {
                            query = query + " and dbo.Car_Master.Car_Type = '" + CarTourerClassID + "' and dbo.Car_Master.CarModel_Id = '" + CarTourerModelID + "'";
                        }
 
                        if (flag == 1)
                        {
                            query = query + " or dbo.Car_Master.Car_Type = '" + CarTourerClassID + "' and dbo.Car_Master.CarModel_Id = '" + CarTourerModelID + "'";
                        }
                    }
 
                    flag = 1;
                }
            }
 
            // where query for checkbox and get car class and car model for SpecialityCars
            if (CarSpecialityCarsModel != "")
            {
                int flag = 0;
 
                DataTable dtCarSpecialityCarsClass = new DataTable();
                DataTable dtCarSpecialityCarsModel = new DataTable();
 
                dtCarSpecialityCarsModel = _BusinessLayer.getSingleRecord("select * from CarModel_master where Car_Model ='" + CarSpecialityCarsModel + "'");
                int CarSpecialityCarsModelID = Convert.ToInt32(dtCarSpecialityCarsModel.Rows[0]["CarModel_Id"]);
 
                foreach (string SpecialityCar in CarSpecialityCarsClass)
                {
                    dtCarSpecialityCarsClass = _BusinessLayer.getSingleRecord("select * from CarClass_Master where Class_Type='" + SpecialityCar + "'");
                    int CarSpecialityCarsClassID = Convert.ToInt32(dtCarSpecialityCarsClass.Rows[0]["Class_ID"]);
 
                    if (CarSaloonModel != "" || CarCoupeModel != "" || CarCabrioletModel != "" || CarOffRoaderModel != "" || CarTourerModel != "")
                        query = query + " or dbo.Car_Master.Car_Type = '" + CarSpecialityCarsClassID + "' and dbo.Car_Master.CarModel_Id = '" + CarSpecialityCarsModelID + "'";
 
                    if (CarSaloonModel == "" && CarCoupeModel == "" && CarCabrioletModel == "" && CarOffRoaderModel == "" && CarTourerModel == "")
                    {
                        if (flag == 0)
                        {
                            query = query + " and dbo.Car_Master.Car_Type = '" + CarSpecialityCarsClassID + "' and dbo.Car_Master.CarModel_Id = '" + CarSpecialityCarsModelID + "'";
                        }
 
                        if (flag == 1)
                        {
                            query = query + " or dbo.Car_Master.Car_Type = '" + CarSpecialityCarsClassID + "' and dbo.Car_Master.CarModel_Id = '" + CarSpecialityCarsModelID + "'";
                        }
                    }
 
                    flag = 1;
                }
            }          
       
        return query;
 
    }//get query function closed here
Posted 28-Jan-13 4:10am
Comments
Ankur\m/ at 28-Jan-13 9:14am
   
you call that short? :omg:
ubaidh sayed at 28-Jan-13 9:20am
   
Code is not short :)
Edo Tzumer at 29-Jan-13 7:07am
   
:laugh:
Vyacheslav Voronenko at 28-Jan-13 9:23am
   
Give us link to deployed app :)

1 solution

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

Probably the Session is getting expired. I modified my Bind Gird Method to
public void bindGrid(bool isPageIndexChanged)
    {
        try
        {
            DataTable dt = new DataTable();
            if (!isPageIndexChanged)
            {
 
                dt = _BusinessLayer.getSingleRecord(getQuery());
                Session["FetchedData"] = dt;
            }
            else
            {
                dt=(DataTable)Session["FetchedData"];
            }
            grdCarSearch.DataSource = dt;
            if(Convert.ToString( Session["PageSize"]) !=null)
                grdCarSearch.PageIndex = Convert.ToInt32(Session["PageSize"]);
            grdCarSearch.DataBind();
 
            if (dt.Rows.Count == 0)
            {
                lblgrdempt.Visible = true;
            }
        }
        catch (Exception ex)
        {
 
        }
    }
 
This is how i call it from the paging event
protected void grdCarSearch_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
 
        grdCarSearch.EditIndex = -1;
       // grdCarSearch.PageIndex = e.NewPageIndex;
        grdCarSearch.DataBind();
        Session["PageSize"] = e.NewPageIndex;
        //grdCarSearch.pa
        bindGrid(true);
    }
  Permalink  

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 Kornfeld Eliyahu Peter 275
1 Maciej Los 214
2 Sergey Alexandrovich Kryukov 200
3 King Fisher 185
4 OriginalGriff 163
0 OriginalGriff 6,223
1 DamithSL 4,724
2 Maciej Los 4,196
3 Kornfeld Eliyahu Peter 3,894
4 Sergey Alexandrovich Kryukov 3,496


Advertise | Privacy | Mobile
Web02 | 2.8.141220.1 | Last Updated 29 Jan 2013
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100