private void DetailEditDialog_Store(object sender, CustomFieldEdit.EventArguments e)
	{
		foreach (RowControl r in rows)
		{
			if (r.Edit.ClientID != e.State.Get("@Sender", string.Empty))
				continue;

			BXParamsBag<object> state = e.State;

			state.Remove("@Sender");
			string locKey = "Loc." + BXLoc.CurrentLocale;
			r.Name.Text = (state.Get<string[]>(locKey) ?? new string[1] { string.Empty })[0];
			r.Active.Checked = state.Get("ShowInList", true);
			r.Multiple.Checked = state.Get("Multiple", false);
			r.Sort.Text = state.Get("Sort", "");
			if (r.Code.Visible)
				r.Code.Text = state.Get("FieldName", "");
			if (r.Type.Visible)
				r.Type.SelectedValue = state.Get("CustomTypeId", "Bitrix.System.Text");

			r.Store(state);
			Fields.Update();
			break;
		}
	}
	protected void Page_Load(object sender, EventArgs e)
	{
		DetailEditDialog = (CustomFieldEdit)LoadControl("~/bitrix/controls/Main/CustomFieldEdit.ascx");
		(DialogPlaceholder ?? DP).Controls.Add(DetailEditDialog);

		int quantity = 0;
		foreach (BXCustomField field in BXCustomEntityManager.GetFields(EntityId))
		{
			quantity++;
			AddField(field, quantity);
		}

		for (int i = 0; i < 5; i++)
			AddField(null, quantity + 1 + i);

		DeleteHeader.Visible = AllowDelete;

		GenerateIds();
		AssignTriggers();
		DetailEditDialog.Store += DetailEditDialog_Store;
	}