Есть ли обнуляемая программа выбора даты, к которой я могу привязаться? - PullRequest
2 голосов
/ 15 мая 2009

Я ищу средство выбора даты, подобное тому, которое предоставляет Microsoft, но оно не поддерживает нулевые значения, и поскольку оно связано с пустым полем в базе данных, что недопустимо.

Я нашел этот , но, согласно комментариям внизу страницы, он имеет проблемы с привязкой к базе данных. У меня также есть один в моем проекте, который я унаследовал, но у него есть похожие проблемы (иногда он показывает значения, иногда нет). Кто-нибудь знает один, который работает?

Ответы [ 4 ]

4 голосов
/ 15 мая 2009

Используйте средство выбора даты для заполнения текстового поля и, если они хотят, чтобы поле было пустым, просто удалите содержимое текстового поля (а затем обработайте пустой ввод соответственно).

Это также обеспечивает дополнительное преимущество, позволяя пользователю вводить дату, если он того пожелает.

1 голос
/ 15 мая 2009

В Smart FieldPackEditor есть средство выбора даты, которое можно обнулять. Я считаю, что он делает все, что вам нужно. Я хотел бы, чтобы это было где-то, когда я имел дело с такого рода вещами. Я до сих пор помню все обходные пути, которые мне пришлось применить с помощью средства управления датами Microsoft. Uggh!

http://www.visualhint.com/index.php/fieldpackeditor/

0 голосов
/ 15 мая 2009

Этот, кажется, работает, у одного из моих коллег было:

using System;
using System.Windows.Forms;

namespace CustomControls
{
    public class NullableBindableDateTimePicker : System.Windows.Forms.DateTimePicker
    {
        private Boolean isNull = false;
        private DateTimePickerFormat baseFormat = DateTimePickerFormat.Short;
        private Boolean ignoreBindOnFormat = false;

        public NullableBindableDateTimePicker()
        {
            this.Format = baseFormat;
            if (baseFormat == DateTimePickerFormat.Custom) this.CustomFormat = " ";
        }

        public Boolean IsNull
        {
            get { return isNull; }
            set
            {
                isNull = value;
                this.Checked = value;
            }
        }

        //TODO: Add BaseCustomFormat

        public DateTimePickerFormat BaseFormat
        {
            get { return baseFormat; }
            set { baseFormat = value; }
        }

        public object BindMe
        {
            get
            {
                if (IsNull) return System.DBNull.Value;
                else return base.Value;
            }
            set
            {
                //String s = this.Name;

                if (ignoreBindOnFormat) return;

                if (System.Convert.IsDBNull(value))
                {
                    // for some reason setting base.format in this.format calls set BindMe.
                    // we need to ignore the following call
                    ignoreBindOnFormat = true;
                    this.Format = DateTimePickerFormat.Custom;
                    ignoreBindOnFormat = false;

                    this.CustomFormat = " ";
                    IsNull = true;
                }
                else
                {
                    ignoreBindOnFormat = true;
                    this.Format = baseFormat;
                    ignoreBindOnFormat = false;

                    if (baseFormat == DateTimePickerFormat.Custom) this.CustomFormat = " ";
                    IsNull = false;
                    base.Value = (DateTime)value;
                }
            }
        }

        protected override void OnKeyDown(KeyEventArgs e)
        {
            base.OnKeyDown(e);

            if (e.KeyCode == Keys.Delete)
            {
                this.BindMe = DBNull.Value;
            }
        }

        protected override void OnCloseUp(EventArgs eventargs)
        {
            base.OnCloseUp(eventargs);
            BindMe = base.Value;
        }
    }
}
0 голосов
/ 15 мая 2009

почему бы не использовать средство выбора даты на стороне клиента для заполнения текстового поля. Если текстовое поле пустое, тогда у вас нулевая дата, в противном случае преобразуйте значение.

jQuery имеет приятный и простой в использовании DatePicker. http://jqueryui.com

...