protected void gvApps_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                int rowN = Convert.ToInt32(e.CommandArgument);
                gvApps.SelectRow(rowN);

                long iid = Convert.ToInt64(gvApps.SelectedValue);

                string clmName            = gvApps.SelectedRow.Cells[2].Text;
                ClimbingConfirmations cfs = new ClimbingConfirmations();
                SqlCommand            cmd = new SqlCommand();
                cmd.Connection = cn;
                bool   reloadApps = false;
                string clmStr     = getClmString(iid);
                switch (e.CommandName)
                {
                case "ConfirmLine":
                    bool cDel, qfErr, cEdit;
                    reloadApps = true;
                    string message;
                    switch (cfs.ConfirmClimber(iid, out cDel, out cEdit, out qfErr, out message))
                    {
                    case InsertingResult.SUCCESS:
                        if (cDel)
                        {
                            LblErrorMessage.Text = "Участник " + clmName + " успешно удалён";
                            MessageString        = MessageString + "\r\n" + clmStr + "Удаление";
                        }
                        else
                        {
                            MessageString        = MessageString + "\r\n" + clmStr + (cEdit ? "Правка" : "Добавление");
                            LblErrorMessage.Text = "Участник " + clmName + " успешно " + (cEdit ? "изменён" : "внесён в базу данных");
                        }
                        break;

                    case InsertingResult.QUOTA_EXCEED:
                        LblErrorMessage.Text = "Участник " + clmName + " не был добавлен по причине превышения квоты";
                        break;

                    case InsertingResult.TO_QUEUE:
                        MessageString        = MessageString + "\r\n" + clmStr + "В очередь";
                        LblErrorMessage.Text = "Участник " + clmName + " был поставлен в очередь.";
                        break;

                    case InsertingResult.DUPLICATE:
                        reloadApps           = false;
                        LblErrorMessage.Text = "Такой участник уже есть в БД";
                        break;

                    default:
                        reloadApps           = false;
                        LblErrorMessage.Text = "Ошибка зявки учатника " + clmName;
                        break;
                    }
                    if (qfErr)
                    {
                        LblErrorMessage.Text += "; " + ClimbingConfirmations.RAZR_NOTE;
                    }
                    if (!String.IsNullOrEmpty(message))
                    {
                        LblErrorMessage.Text += "<br />" + message;
                    }
                    break;

                case "DeleteLine":
                    var toDel = dc.ONLClimberCompLinks.First(l => l.iid == iid);
                    List <ONLClimberCompLink> tUpd = new List <ONLClimberCompLink>();
                    foreach (var v in toDel.ONLClimberCompLink1)
                    {
                        tUpd.Add(v);
                    }
                    foreach (var v in tUpd)
                    {
                        v.replacementID = null;
                    }
                    dc.SaveChanges();
                    dc.ONLClimberCompLinks.DeleteObject(toDel);
                    dc.SaveChanges();
                    LblErrorMessage.Text = "Заявка на участника " + clmName + " отменена.";
                    reloadApps           = true;
                    break;

                case "EditLine":
                    SetToEdit(iid);
                    return;
                }
                if (reloadApps)
                {
                    LongStringClass lstr = new LongStringClass(compID, MessageString);
                    Thread          thr  = new Thread(RepreshOp);
                    thr.Start(lstr);
                }
                RefreshTable();
            }
            catch (Exception ex)
            {
                LblErrorMessage.Text = "Ошибка правки";
                if (User.IsInRole(Constants.ROLE_ADMIN, compID))
                {
                    LblErrorMessage.Text += ": " + ex.Message;
                }
            }
        }
        private void ConfirmCLimber()
        {
            if (String.IsNullOrEmpty(hfEditingClimber.Value))
            {
                return;
            }
            long curClmId;

            if (!long.TryParse(hfEditingClimber.Value, out curClmId))
            {
                return;
            }
            ONLClimberCompLink old;

            try { old = dc.ONLClimberCompLinks.First(l => l.iid == curClmId); }
            catch { return; }
            bool isUser = !User.IsInRole(Constants.ROLE_ADMIN, compID);

            if (isUser && !old.is_changeble)
            {
                climberEditControl.ErrMessage = "Изменение данного участника невозможно";
                return;
            }
            bool       newClm;
            ONLclimber createdClm;
            var        uCl = climberEditControl.createClimber(old.team_id.ToString(), out newClm, out createdClm);

            if (uCl == null)
            {
                return;
            }
            if (isUser && uCl.group_id != old.group_id)
            {
                climberEditControl.ErrMessage = "Для изменения возрастной группы подайте новую заявку";
                if (newClm && createdClm.EntityState != EntityState.Detached)
                {
                    dc.ONLclimbers.Detach(createdClm);
                }
                if (uCl.EntityState != EntityState.Detached)
                {
                    dc.ONLClimberCompLinks.Detach(uCl);
                }
                return;
            }
            if (newClm)
            {
                int newClmId;
                if (dc.ONLclimbers.Count() < 1)
                {
                    newClmId = 1;
                }
                else
                {
                    newClmId = dc.ONLclimbers.OrderByDescending(c => c.iid).First().iid + 1;
                }
                createdClm.iid = newClmId;
                dc.ONLclimbers.AddObject(createdClm);
                if (uCl.EntityState != EntityState.Detached)
                {
                    dc.ONLClimberCompLinks.Detach(uCl);
                }
                dc.SaveChanges();
            }

            if (User.IsInRole(Constants.ROLE_ADMIN, compID))
            {
                old.climber_id = createdClm.iid;

                ConfirmAdmin(uCl, old);
            }
            else
            {
                uCl.iid = dc.ONLClimberCompLinks.OrderByDescending(l => l.iid).First().iid + 1;

                ONLoperation nextOp = GetOperation();
                uCl.updOpIid     = nextOp.iid;
                uCl.ONLoperation = nextOp;
                uCl.climber_id   = createdClm.iid;
                uCl.ONLclimber   = createdClm;
                uCl.secretary_id = old.secretary_id;
                dc.ONLClimberCompLinks.AddObject(uCl);
                dc.SaveChanges();

                old.replacementID       = uCl.iid;
                old.ONLClimberCompLink2 = uCl;
                old.sys_date_update     = DateTime.UtcNow;
                dc.SaveChanges();

                uncList.LblMessageText = "Изменение принято. Для отправки изменений старшему тренеру Вашего региона нажмите на \"Подтвердить все заявки через e-mail\"";
            }

            ClimbingConfirmations.DeleteDeadClimbers(dc);

            panelEdit.Visible  = false;
            panelView.Enabled  = true;
            panelQueue.Enabled = true;
            FillLists();
        }