/// <summary>
        /// Handles the SaveClick event of the dlgAttribute control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        protected void dlgEventAttribute_SaveClick(object sender, EventArgs e)
        {
            Rock.Model.Attribute attribute = new Rock.Model.Attribute();
            edtEventAttributes.GetAttributeProperties(attribute);

            // Controls will show warnings
            if (!attribute.IsValid)
            {
                return;
            }

            if (EventAttributesState.Any(a => a.Guid.Equals(attribute.Guid)))
            {
                attribute.Order = EventAttributesState.Where(a => a.Guid.Equals(attribute.Guid)).FirstOrDefault().Order;
                EventAttributesState.RemoveEntity(attribute.Guid);
            }
            else
            {
                attribute.Order = EventAttributesState.Any() ? EventAttributesState.Max(a => a.Order) + 1 : 0;
            }

            EventAttributesState.Add(attribute);

            ReOrderEventAttributes(EventAttributesState);

            BindEventAttributesGrid();

            HideDialog();
        }
        /// <summary>
        /// Handles the Delete event of the gEventAttributes control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="RowEventArgs" /> instance containing the event data.</param>
        /// <exception cref="System.NotImplementedException"></exception>
        protected void gEventAttributes_Delete(object sender, RowEventArgs e)
        {
            Guid attributeGuid = ( Guid )e.RowKeyValue;

            EventAttributesState.RemoveEntity(attributeGuid);

            BindEventAttributesGrid();
        }