powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Заценити
1 сообщений из 1, страница 1 из 1
Заценити
    #33979317
kon_v_palto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Навял пару контролов для обработки исключений.

ExceptionValidator — Не валиден если вызвать void Exception(Exception ex)

DetailsViewValidator — Присоединяется(с помощью AssociatedControlID) к DetailsView и обрабатывает исключения при Insert, Update и Delete.

Хотелосьбы услышать отзывы и довести дело до ума.


using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace mycontrol
{

    public class ExceptionValidator : Label, IValidator
    {
        private Exception LastException = null;

        public ExceptionValidator()
        {
            ForeColor = System.Drawing.Color.Red;
        }

        public void Exception(Exception ex)
        {
            LastException = ex;
        }

        public string ErrorMessage
        {
            get
            {
                if (IsValid)
                    return "Valid";
                else
                    return LastException.ToString();
            }
            set
            { }
        }

        public bool IsValid
        {
            get
            {
                return LastException == null;
            }

            set
            { }
        }

        public void Validate()
        {
        }

        public override string Text
        {
            get
            {
                return ErrorMessage;
            }
        }

        protected override void Render(HtmlTextWriter writer)
        {
            if (!IsValid || DesignMode) base.Render(writer);
        }
    }


    public class DetailsViewValidator : ExceptionValidator
    {
        private string _associatedControlID;
        public string AssociatedControlID
        {
            get
            {
                return _associatedControlID;
            }
            set
            {
                _associatedControlID = value;
            }
        }

        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            DetailsView dv = (DetailsView)Parent.FindControl(AssociatedControlID);
            dv.ItemInserted += new DetailsViewInsertedEventHandler(AssociatedControl_ItemInserted);
            dv.ItemUpdated += new DetailsViewUpdatedEventHandler(AssociatedControl_ItemUpdated);
            dv.ItemDeleted += new DetailsViewDeletedEventHandler(AssociatedControl_ItemDeleted);
        }

        void AssociatedControl_ItemDeleted(object sender, DetailsViewDeletedEventArgs e)
        {
            if (e.Exception != null)
            {
                Exception(e.Exception);
                e.ExceptionHandled = true;

            }
        }

        void AssociatedControl_ItemUpdated(object sender, DetailsViewUpdatedEventArgs e)
        {
            if (e.Exception != null)
            {
                Exception(e.Exception);
                e.ExceptionHandled = true;
            }
        }

        void AssociatedControl_ItemInserted(object sender, DetailsViewInsertedEventArgs e)
        {
            if (e.Exception != null)
            {
                Exception(e.Exception);
                e.ExceptionHandled = true;
            }

        }

    }
}
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Заценити
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]