protected void GridView1_Delete(object sender, BXDeleteEventArgs e)
	{
		BXGridView grid = (BXGridView)sender;
		try
		{
			BXIBlockCommonCollection elements;
			if (e.Keys != null) //Delete one element
			{
				elements = new BXIBlockCommonCollection();
				
				int tempId;
				Int32.TryParse(e.Keys["ID"].ToString(), out tempId);
				string tempKey = e.Keys["CommonElementType"].ToString();
				if (tempId <= 0 
					|| 	(!string.Equals(tempKey, "E", StringComparison.OrdinalIgnoreCase) 
						&& !string.Equals(tempKey, "S", StringComparison.OrdinalIgnoreCase)))
				{
					throw new PublicException(GetMessageRaw("Error.ElementCodeIsNotFound"));
				}
				
				if (string.Equals(tempKey, "E", StringComparison.OrdinalIgnoreCase))
				{
					BXIBlockElement elem = BXIBlockElement.GetById(tempId);
					if (elem == null)
						throw new PublicException(GetMessageRaw("Exception.ElementIsNotFound"));
					elements.Add(elem);
				}
				else
				{
					BXIBlockSection sect = BXIBlockSection.GetById(tempId);
					if (sect == null)
						throw new PublicException(GetMessageRaw("Exception.SectionIsNotFound"));
					elements.Add(sect);
				}
			}
			else //All elements
			{
				elements = BXIBlockSection.GetMixedList(MakeCurrentFilter(), null);
			}

			foreach (BXEntity element in elements)
			{
				if (element == null)
					throw new PublicException(GetMessageRaw("Exception.ElementIsNotFound"));
				if (element is BXIBlockElement)
				{
					BXIBlockElement elem = (BXIBlockElement)element;
					if (!BXIBlock.IsUserCanOperate(elem.IBlockId, BXIBlock.Operations.IBlockModifyElements))
						throw new PublicException(GetMessageRaw("ExceptionText.YouDontHaveRightsToDeleteThisRecord"));
					elem.Delete();					
				}
				else
				{
					BXIBlockSection sect = (BXIBlockSection)element;
					if (!BXIBlock.IsUserCanOperate(sect.IBlockId, BXIBlock.Operations.IBlockModifySections))
						throw new PublicException(GetMessageRaw("Exception.YouDontHaveRightsToDeleteThisRecord"));

                    sect.Delete();
					//if (!BXInfoBlockSectionManagerOld.Delete(sect.Id))
						//throw new Exception(GetMessageRaw("Exception.AnErrorHasOccurredWhileDeletingSection"));
				}
				e.DeletedCount++;
			}
			successMessage.Visible = true;
		}
		catch (Exception ex)
		{
			ProcessException(ex, errorMessage.AddErrorText);
		}
		grid.MarkAsChanged();
	}
	private DataTable FillTable(BXIBlockCommonCollection collection, List<string> visibleColumnsList)
	{
		
		if (collection == null)
			collection = new BXIBlockCommonCollection();

		DataTable result = new DataTable();

		result.Columns.Add("num", typeof(int));
		result.Columns.Add("Name", typeof(string));
		result.Columns.Add("Sort", typeof(int));
		result.Columns.Add("Code", typeof(string));
		result.Columns.Add("XmlId", typeof(string));
		result.Columns.Add("Tags", typeof(string));
		result.Columns.Add("Active", typeof(bool));
		result.Columns.Add("ElementsCount", typeof(int));
		result.Columns.Add("SectionsCount", typeof(int));
		result.Columns.Add("UpdateDate", typeof(DateTime));
		result.Columns.Add("ActiveFromDate", typeof(string));
		result.Columns.Add("ActiveToDate", typeof(string));
		result.Columns.Add("ModifiedBy", typeof(string));
		result.Columns.Add("CreateDate", typeof(DateTime));
		result.Columns.Add("CreatedBy", typeof(string));

		result.Columns.Add("PreviewText", typeof(string));
		result.Columns.Add("PreviewTextType", typeof(char));
		result.Columns.Add("PreviewPictureId", typeof(int));

		result.Columns.Add("DetailText", typeof(string));
		result.Columns.Add("DetailTextType", typeof(char));
		result.Columns.Add("DetailPictureId", typeof(int));
		result.Columns.Add("ID", typeof(int));
		result.Columns.Add("CommonElementType", typeof(string));

		AddCustomFieldColumns(result.Columns);

		bool canViewUsers = this.BXUser.IsCanOperate(BXRoleOperation.Operations.UserView);

		foreach (BXEntity t in collection)
		{
			DataRow r = result.NewRow();
			if (t is BXIBlockSection)
			{
				BXIBlockSection s = (BXIBlockSection)t;
				r["Name"] = s.Name;
				r["Sort"] = s.Sort;
				r["Code"] = s.Code;
				r["XmlId"] = s.XmlId;
				r["Tags"] = "";
				r["Active"] = s.Active;
				r["ElementsCount"] = (visibleColumnsList.Contains("ElementsCount") ? s.ElementsCount : 0);
				r["SectionsCount"] = (visibleColumnsList.Contains("SectionsCount") ? s.SectionsCount : 0);
				r["UpdateDate"] = s.UpdateDate;
				r["ActiveFromDate"] = "";
				r["ActiveToDate"] = "";

                if (visibleColumnsList.Contains("ModifiedBy") && s.ModifiedByUser != null)
				{
					if (canViewUsers)
						r["ModifiedBy"] = String.Format("(<a href=\"AuthUsersEdit.aspx?id={3}\">{0}</a>) {1} {2}", Encode(s.ModifiedByUser.UserName), Encode(s.ModifiedByUser.FirstName), Encode(s.ModifiedByUser.LastName), s.ModifiedBy);
					else
						r["ModifiedBy"] = String.Format("({0}) {1} {2}", Encode(s.ModifiedByUser.UserName), Encode(s.ModifiedByUser.FirstName), Encode(s.ModifiedByUser.LastName));
                }
				else
                    r["ModifiedBy"] = "";

                if (visibleColumnsList.Contains("CreatedBy") && s.CreatedByUser != null)
				{
					if (canViewUsers)
						r["CreatedBy"] = String.Format("(<a href=\"AuthUsersEdit.aspx?id={3}\">{0}</a>) {1} {2}", Encode(s.CreatedByUser.UserName), Encode(s.CreatedByUser.FirstName), Encode(s.CreatedByUser.LastName), s.CreatedBy);
					else
						r["CreatedBy"] = String.Format("({0}) {1} {2}", Encode(s.CreatedByUser.UserName), Encode(s.CreatedByUser.FirstName), Encode(s.CreatedByUser.LastName));
				}
                else
                    r["CreatedBy"] = "";

				r["CreateDate"] = s.CreateDate;
				r["PreviewText"] = "";
				r["PreviewTextType"] = 'H';
				r["DetailText"] = s.Description;
				r["DetailTextType"] = (s.DescriptionType == BXTextType.Html ? 'H' : 'T');
				r["DetailPictureId"] = s.DetailImageId;
				r["PreviewPictureId"] = s.ImageId;
				r["ID"] = s.Id;
				r["CommonElementType"] = "S";
			}
			else if (t is BXIBlockElement)
			{
				BXIBlockElement s = (BXIBlockElement)t;
				r["Name"] = s.Name;
				r["Sort"] = s.Sort;
				r["Code"] = s.Code;
				r["XmlId"] = s.XmlId;
				r["Tags"] = s.Tags;
				r["Active"] = s.Active;
				r["ElementsCount"] = 0;
				r["SectionsCount"] = 0;
				r["CreateDate"] = s.CreateDate;
				r["UpdateDate"] = s.UpdateDate;

				string activeFromDate = String.Empty;
				if (s.ActiveFromDate != DateTime.MinValue)
				{
					if (s.ActiveFromDate.TimeOfDay == TimeSpan.Zero)
						activeFromDate = s.ActiveFromDate.ToString("d");
					else
						activeFromDate = s.ActiveFromDate.ToString();
				}

				r["ActiveFromDate"] = activeFromDate;

				string activeToDate = String.Empty;
				if (s.ActiveToDate != DateTime.MinValue)
				{
					if (s.ActiveToDate.TimeOfDay == TimeSpan.Zero)
						activeToDate = s.ActiveToDate.ToString("d");
					else
						activeToDate = s.ActiveToDate.ToString();
				}

				r["ActiveToDate"] = activeToDate;
				
				if (visibleColumnsList.Contains("ModifiedBy") && s.ModifiedByUser != null)
				{
					if (canViewUsers)
						r["ModifiedBy"] = String.Format("(<a href=\"AuthUsersEdit.aspx?id={3}\">{0}</a>) {1} {2}", Encode(s.ModifiedByUser.UserName), Encode(s.ModifiedByUser.FirstName), Encode(s.ModifiedByUser.LastName), s.ModifiedBy);
					else
						r["ModifiedBy"] = String.Format("({0}) {1} {2}", Encode(s.ModifiedByUser.UserName), Encode(s.ModifiedByUser.FirstName), Encode(s.ModifiedByUser.LastName));
                }
				else
                    r["ModifiedBy"] = "";

                if (visibleColumnsList.Contains("CreatedBy") && s.CreatedByUser != null)
				{
					if (canViewUsers)
						r["CreatedBy"] = String.Format("(<a href=\"AuthUsersEdit.aspx?id={3}\">{0}</a>) {1} {2}", Encode(s.CreatedByUser.UserName), Encode(s.CreatedByUser.FirstName), Encode(s.CreatedByUser.LastName), s.CreatedBy);
					else
						r["CreatedBy"] = String.Format("({0}) {1} {2}", Encode(s.CreatedByUser.UserName), Encode(s.CreatedByUser.FirstName), Encode(s.CreatedByUser.LastName));
				}
                else
                    r["CreatedBy"] = "";


				r["PreviewText"] = s.PreviewText;
				r["PreviewTextType"] = (s.PreviewTextType == BXTextType.Html ? 'H' : 'T');

				r["DetailText"] = s.DetailText;
				r["DetailTextType"] = (s.DetailTextType == BXTextType.Html ? 'H' : 'T');
				r["DetailPictureId"] = s.DetailImageId;
				r["PreviewPictureId"] = s.PreviewImageId;

				r["ID"] = s.Id;
				r["CommonElementType"] = "E";

				AddCustomFieldValues(r, s);
			}
			else
				continue;

			result.Rows.Add(r);
		}

		return result;
	}