private void ClassesGridOnSorting(object sender, GridViewSortEventArgs args)
        {
            string lastExpression = "";

            if (ViewState["SortExpression"] != null)
            {
                lastExpression = ViewState["SortExpression"].ToString();
            }

            string lastDirection = "asc";

            if (ViewState["SortDirection"] != null)
            {
                lastDirection = ViewState["SortDirection"].ToString();
            }


            string newDirection = "asc";

            if (args.SortExpression == lastExpression)
            {
                newDirection = (lastDirection == "asc") ? "desc" : "asc";
            }

            ViewState["SortExpression"] = args.SortExpression;

            ViewState["SortDirection"] = newDirection;

            data.DefaultView.Sort = args.SortExpression + " " + newDirection;

            ClassesGrid.DataBind();
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            //if (Page.IsPostBack)
            //    return;

            currentWeb = SPContext.Current.Web;
            SPUser currentUser = currentWeb.CurrentUser;

            //SPServiceContext serviceContext = SPServiceContext.GetContext(SPContext.Current.Site);
            //UserProfileManager upm = new UserProfileManager(serviceContext);
            //UserProfile currentProfile = upm.GetUserProfile(true);
            string  eMail                   = currentUser.Email;
            SPList  registrationsList       = currentWeb.Lists["Registrations"];
            SPQuery getRegistrationsForUser = new SPQuery();

            getRegistrationsForUser.ViewFields = "<FieldRef Name='Title'/><FieldRef Name='ID'/>";
            getRegistrationsForUser.Query      = "<Where><Eq><FieldRef Name='Email' /><Value Type='Text'>" + eMail + "</Value></Eq></Where>";
            SPListItemCollection currentUserRegistrations = registrationsList.GetItems(getRegistrationsForUser);

            data = new DataTable();
            data.Columns.Add("CourseTitle");
            data.Columns.Add("Venue");
            data.Columns.Add("StartDate");
            data.Columns.Add("EndDate");
            data.Columns.Add("RegId");

            if (currentUserRegistrations.Count > 0)
            {
                foreach (SPListItem registration in currentUserRegistrations)
                {
                    //Get the class ID from the "Title" column of the Registration record:  classid-regid
                    string title   = registration["RegistrationId"].ToString();
                    string classId = title.Substring(0, title.IndexOf('-'));

                    //Get the class record from the Classes list
                    SPListItem theClass = GetClass(classId);

                    string courseTitle = theClass["Course Title"].ToString().Remove(0, 3);
                    string venue       = theClass["Venue"].ToString();
                    string startDate   = theClass["Data rozpoczęcia"].ToString();
                    string endDate     = theClass["Data zakończenia"].ToString();
                    string regId       = registration["ID"].ToString();

                    var row = data.Rows.Add();
                    row["CourseTitle"] = courseTitle;
                    row["Venue"]       = venue;
                    row["StartDate"]   = startDate;
                    row["EndDate"]     = endDate;
                    row["RegId"]       = regId;

                    //lbClasses.Items.Add(newItem);
                }
            }
            else
            {
                //lbClasses.Items.Add("You are not registered for any classes.");
            }

            if (!Page.IsPostBack)
            {
                ClassesGrid.Columns.Add(new SPBoundField
                {
                    HeaderText     = "Registration Id",
                    DataField      = "RegId",
                    SortExpression = "RegId"
                });
                ClassesGrid.Columns.Add(new SPBoundField
                {
                    HeaderText     = "Course Title",
                    DataField      = "CourseTitle",
                    SortExpression = "CourseTitle"
                });
                ClassesGrid.Columns.Add(new SPBoundField
                {
                    HeaderText     = "Venue",
                    DataField      = "Venue",
                    SortExpression = "Venue"
                });
                ClassesGrid.Columns.Add(new SPBoundField
                {
                    HeaderText     = "Start Date",
                    DataField      = "StartDate",
                    SortExpression = "StartDate"
                });
                ClassesGrid.Columns.Add(new SPBoundField
                {
                    HeaderText     = "End Date",
                    DataField      = "EndDate",
                    SortExpression = "EndDate"
                });

                ClassesGrid.Columns[0].ItemStyle.HorizontalAlign = HorizontalAlign.Center;
                ClassesGrid.Columns[1].ItemStyle.HorizontalAlign = HorizontalAlign.Center;
                ClassesGrid.Columns[2].ItemStyle.HorizontalAlign = HorizontalAlign.Center;
                ClassesGrid.Columns[3].ItemStyle.HorizontalAlign = HorizontalAlign.Center;
                ClassesGrid.Columns[4].ItemStyle.HorizontalAlign = HorizontalAlign.Center;
            }

            ClassesGrid.DataSource = data.DefaultView;
            ClassesGrid.DataBind();
            ClassesGrid.Sorting += ClassesGridOnSorting;
        }