//action 'Delete' exist object from grid
        private void btnDeleteComplex_Click(object sender, EventArgs e)
        {
            //return if element by index is not exist
            if (!(Klr030List.Count > indexSelectedElem))
            {
                return;
            }
            //delete selected item of grid by field 'Code'
            KlR030 item   = Klr030List[indexSelectedElem];
            bool   result = CheckAfterDelete(Convert.ToInt32(item.R030));

            //update data for grid
            gridKlr030List.DataSource = HandleDataForGrid(urlDataGrid);
            //step up in grid position
            if (result)
            {
                --indexSelectedElem;
            }
            if (indexSelectedElem < 0)
            {
                indexSelectedElem = 0;
            }
            gridKlr030List.CurrentRow = gridKlr030List.Rows[indexSelectedElem];
            //define new currentRow
            DataUpdateForBottomPanel(
                Klr030List[indexSelectedElem].R030
                );
        }
 //action 'Add' new object to grid
 private void btnAddComplex_Click(object sender, EventArgs e)
 {
     //change property 'Text' of the btnSave for 'Add' action
     btnSaveKlr030.Text = "Додати";
     //refresh data for field 'Code'
     klr030Data = new KlR030 {
         R031 = 1, CountryCode = ddlFilterKlr030.Items.First.Value.ToString()
     };
     bsKlr030.DataSource = klr030Data;
     //refresh data for field 'Uk'
     ukKlr030 = new KlR030tr {
         Lang = Langs[0]
     };
     klr030Data.KlR030tr.Add(ukKlr030);
     bsUkLangKlr030.DataSource = ukKlr030;
     //refresh data for field 'Ru'
     ruKlr030 = new KlR030tr {
         Lang = Langs[1]
     };
     klr030Data.KlR030tr.Add(ruKlr030);
     bsRuLangKlr030.DataSource = ruKlr030;
     //refresh data for field 'Ru'
     enKlr030 = new KlR030tr {
         Lang = Langs[2]
     };
     klr030Data.KlR030tr.Add(enKlr030);
     bsEnLangKlr030.DataSource = enKlr030;
     //stop perform if elements have 'Enabled' -> false
     if (!ControlEnabledActiveElements)
     {
         return;
     }
     //change 'Enabled' state for elements
     ControlEnabledActiveElements = false;
 }
        /// <summary>
        /// check result data after 'Update'
        /// </summary>
        /// <param name="updateItem"></param>
        /// <returns></returns>
        private KlR030 CheckAfterUpdate(KlR030 updateItem)
        {
            UpdateLayer dictDelegat = new UpdateLayer(_layer.Update);
            KlR030      result      = dictDelegat(klr030Data);

            if (result == null)
            {
                MessageShow.ShowError(UpdateMess);
                //select first element of grid by default
                result = Klr030List[0];
            }
            return(result);
        }
        /// <summary>
        /// check result data after 'Create'
        /// </summary>
        /// <param name="createItem"></param>
        /// <returns></returns>
        private KlR030 CheckAfterCreate(KlR030 createItem)
        {
            CreateLayer dictDelegat = new CreateLayer(_layer.Create);
            KlR030      result      = dictDelegat(createItem);

            if (result == null)
            {
                MessageShow.ShowError(CreateMess);
                //select first element of grid by default
                result = Klr030List[0];
            }
            return(result);
        }
        /// <summary>
        /// //check after 'Get' query
        /// </summary>
        /// <param name="codeI"></param>
        /// <returns></returns>
        private KlR030 CheckAfterGetQuery(string code)
        {
            GetDictionaryLayer dictDelegat = new GetDictionaryLayer(_layer.GetDictionary);
            KlR030             result      = new KlR030();

            if (int.TryParse(code, out int codeInt))
            {
                result = dictDelegat(codeInt);
            }
            else
            {
                result = null;
            }
            if (result == null)
            {
                MessageShow.ShowError(GetMess);
                //set select first element of grid
                result = Klr030List[0];
            }
            return(result);
        }
        //action 'Save' object to grid
        private void btnSave_Click(object sender, EventArgs e)
        {
            string codeIAfter = string.Empty;

            if (btnSaveKlr030.Text == "Додати")
            {
                //send created object
                KlR030 result = CheckAfterCreate(klr030Data);
                codeIAfter = result.R030;
                //update data for grid
                gridKlr030List.DataSource = HandleDataForGrid(urlDataGrid);
                indexSelectedElem         = Klr030List.FindIndex(el => el.R031 == result.R031);
                //select certain item into grid
                gridKlr030List.CurrentRow = gridKlr030List.Rows[indexSelectedElem];
                btnSaveKlr030.Text        = "Зберегти";
            }
            else if (btnSaveKlr030.Text == "Зберегти")
            {
                //save changes
                KlR030 result = CheckAfterUpdate(klr030Data);
                codeIAfter = result.R030;
                //save last selected item
                indexSelectedElem = gridKlr030List.CurrentRow.Index;
                //update data for grid
                gridKlr030List.DataSource = HandleDataForGrid(urlDataGrid);
                //select certain item into grid
                gridKlr030List.CurrentRow = gridKlr030List.Rows[indexSelectedElem];
            }
            DataUpdateForBottomPanel(codeIAfter);
            //stop perform if elements have 'Enabled' -> true
            if (ControlEnabledActiveElements)
            {
                return;
            }
            //change 'Enabled' state for elements
            ControlEnabledActiveElements = true;
        }
 //refresh changed data for bottom panel
 private void DataUpdateForBottomPanel(string codeI)
 {
     //get object by parameter 'code' from service
     klr030Data = CheckAfterGetQuery(codeI);
     //use data for binding source
     bsKlr030.DataSource = klr030Data;
     //define binding for source of the 'Uk'
     ukKlr030 = klr030Data.KlR030tr.FirstOrDefault(rec => rec.Lang == Langs[0]);
     if (ukKlr030 == null)
     {
         ukKlr030 = new KlR030tr {
             Lang = Langs[0]
         };
         klr030Data.KlR030tr.Add(ukKlr030);
     }
     bsUkLangKlr030.DataSource = ukKlr030;
     //defined binding for source of the 'Ru'
     ruKlr030 = klr030Data.KlR030tr.FirstOrDefault(rec => rec.Lang == Langs[1]);
     if (ruKlr030 == null)
     {
         ruKlr030 = new KlR030tr {
             Lang = Langs[1]
         };
         klr030Data.KlR030tr.Add(ruKlr030);
     }
     bsRuLangKlr030.DataSource = ruKlr030;
     //define binding for source of the 'En'
     enKlr030 = klr030Data.KlR030tr.FirstOrDefault(rec => rec.Lang == Langs[2]);
     if (enKlr030 == null)
     {
         enKlr030 = new KlR030tr {
             Lang = Langs[2]
         };
         klr030Data.KlR030tr.Add(enKlr030);
     }
     bsEnLangKlr030.DataSource = enKlr030;
 }