protected override void OnPreRender(EventArgs e)
        {
            var visibleAddLink = AccessOptions.CheckPermitAdd();

            if (NavigatorControl != null)
            {
                visibleAddLink = visibleAddLink && source.View.AllowAddRowForTableTypes(NavigatorControl.Values, MyProductsResources.Header).Where(r => string.IsNullOrEmpty(r)).Count() == 0;
            }
            if (visibleAddLink)
            {
                SetVisibleAddLink(ref visibleAddLink);
            }

            AddButton.Visible            = visibleAddLink;
            DeleteSelectedButton.Visible = AccessOptions.CheckPermitDelete();
            if (visibleAddLink)
            {
                var addUrl = Url.Clone("MyProductsEdit", true, string.Empty, false).CreateUrl();
                GetAddUrl(ref addUrl);
                AddButton.Listeners.Click.Handler = GridButtonsColumn.AddButtonHandler(addUrl);
            }

            InitGetBrowseFilterParameters();
            InitSelectionMode();

            OnPreRender();
            base.OnPreRender(e);
        }
        private void DeleteRow(long id, MyProductsEdit.RecordEvents recordEvents, bool loadRoot)
        {
            var item = source.GetRecord(id);

            if (item != null)
            {
                var args = new RecordEventArgs();
                recordEvents.RecordDeleting(args, id);

                if (args.Cancel)
                {
                    AddErrorMessage(args.GetFullErrorMessage());
                    return;
                }

                if (!AccessOptions.CheckPermitDelete() ||
                    (item.Information != null && !item.Information.CanDelete))
                {
                    AddErrorMessage(Nat.Web.Controls.Properties.Resources.ENoPermitToDeleteRecord);
                    return;
                }

                if (!item.CanDelete)
                {
                    var messages = source.View.GetDeleteErrors(id, MyProductsResources.Header);
                    if (messages.All(string.IsNullOrEmpty))
                    {
                        AddErrorMessage(Nat.Web.Controls.Properties.Resources.ENoPermitToDeleteRecord);
                    }
                    else
                    {
                        AddErrorMessage(messages.Where(r => !string.IsNullOrEmpty(r)));
                    }
                    return;
                }


                BeforeDelete(item);
                var contextInfo = new DeleteRowContext <MyProduct, DBDataContext, MyProductsJournalDataSourceView.Row, long>
                {
                    Row       = item,
                    Key       = item.id,
                    TableItem = item.Item,
                    DB        = source.View.DB,
                };
                BeforeDelete(contextInfo);
                if (contextInfo.Cancel)
                {
                    AfterDelete(false, item);
                    AddErrorMessage(contextInfo.CancelMessage);
                    return;
                }

                try
                {
                    var delArgs = new DeleteEventArgs <long>();
                    contextInfo.DeleteEventArgs = delArgs;
                    if (contextInfo.SuccessfullRowDeleted != null && !contextInfo.SuccessfullRowDeleted.Value)
                    {
                        AfterDelete(false, item);
                        AddErrorMessage(contextInfo.FailedRowDeletedMessage);
                        return;
                    }

                    if (!delArgs.IsDeleted)
                    {
                        DeleteRow(item, delArgs);
                    }

                    if (!delArgs.IsDeleted)
                    {
                        source.View.DB.MyProducts.DeleteOnSubmit(item.Item);
                        source.View.DB.SubmitChanges();
                    }

                    contextInfo.SuccessfullRowDeleted = true;
                    AfterDelete(true, item);
                    if (delArgs.IsDeleted)
                    {
                        if (delArgs.NewSelectedValue != null)
                        {
                            ResetSelectedIndex(delArgs.NewSelectedValue.Value);
                        }
                        else
                        {
                            EmptySelectedIndex();
                        }
                    }
                }
                catch (SqlException exception)
                {
                    contextInfo.SuccessfullRowDeleted = false;
                    AfterDelete(false, item);
                    if (exception.Number != 547)
                    {
                        AddErrorMessage(exception.ToString());
                    }
                    else
                    {
                        AddErrorMessage(Nat.Web.Controls.Properties.Resources.ECanNotDeleteUseInSystem);
                    }
                }

                store.Reload();
                OnSelectedIndexChanged(EventArgs.Empty);
            }
        }
 bool IAccessControl.CheckPermit(Page page)
 {
     return(AccessOptions.CheckPermit());
 }
        private void InitColumnsInternal()
        {
            var isKZ    = LocalizationHelper.IsCultureKZ;
            var columns = new List <GridColumn>();

            columns.Add(new GridColumn()
            {
                ColumnName = "__icons",
                Visible    = false,

                CanEdit = false,
            });
            columns.Add(new GridButtonsColumn()
            {
                ColumnName    = "__buttons",
                EditUrl       = "/EmptyPage.aspx/data/MyProductsEdit?refMyProducts={0}",
                LookUrl       = "/EmptyPage.aspx/data/MyProductsEdit/read?refMyProducts={0}",
                EditVisible   = AccessOptions.CheckPermitEdit(),
                DeleteVisible = AccessOptions.CheckPermitDelete(),
                CanEdit       = false,
                Width         = "84px",
            });

            var column_Name =
                new GridColumn()
            {
                Header     = MyProductsResources.Name__Header,
                Sort       = "Name",
                Group      = MyProductsResources.Name__GridGroup,
                ColumnName = "Name",
            };

            column_Name.Width          = string.Empty;
            column_Name.ModelFieldType = ModelFieldType.String;
            column_Name.DefaultHidden  = false;
            column_Name.ServerMapping  = "Item.Name";
            column_Name.HasFilter      = true;
            columns.Add(column_Name);
            var column_CreationDate =
                new GridColumn()
            {
                Header     = MyProductsResources.CreationDate__Header,
                Sort       = "CreationDate",
                Group      = MyProductsResources.CreationDate__GridGroup,
                ColumnName = "CreationDate",
                Format     = "{0:d}",
            };

            column_CreationDate.Width          = string.Empty;
            column_CreationDate.ModelFieldType = ModelFieldType.Date;
            column_CreationDate.DefaultHidden  = false;
            column_CreationDate.ServerMapping  = "Item.CreationDate";
            column_CreationDate.HasFilter      = true;
            columns.Add(column_CreationDate);
            var column_Price =
                new GridColumn()
            {
                Header     = MyProductsResources.Price__Header,
                Sort       = "Price",
                Group      = MyProductsResources.Price__GridGroup,
                ColumnName = "Price",
            };

            column_Price.Width            = string.Empty;
            column_Price.ModelFieldType   = ModelFieldType.Float;
            column_Price.DefaultHidden    = false;
            column_Price.ServerMapping    = "Item.Price";
            column_Price.DecimalPrecision = 2;
            column_Price.HasFilter        = true;
            columns.Add(column_Price);
            var column_Amount =
                new GridColumn()
            {
                Header     = MyProductsResources.Amount__Header,
                Sort       = "Amount",
                Group      = MyProductsResources.Amount__GridGroup,
                ColumnName = "Amount",
            };

            column_Amount.Width            = string.Empty;
            column_Amount.ModelFieldType   = ModelFieldType.Float;
            column_Amount.DefaultHidden    = false;
            column_Amount.ServerMapping    = "Item.Amount";
            column_Amount.DecimalPrecision = 2;
            column_Amount.HasFilter        = true;
            columns.Add(column_Amount);
            columns.Add(new GridColumn()
            {
                Header     = TableResources.messages__Header,
                ColumnName = "__messages",
                Visible    = false,

                CanEdit = false,
            });
            InitColumns(columns);
        }