DateTimePicker i wartość null

Odpowiedz Nowy wątek
2009-02-28 15:03
0

Na formularzu mam ustawioną kontrolkę typu DateTimePicker z terminem płatności. Chciałbym mieć możliwość wprowadzenia <null> jako wartości domyślnej, oznaczającej brak terminu płatności.
Niestety, kalendarz z którego nie chiałbym rezygnować, nie pozwala na wprowadzene null - czy jest jakieś rozwiązanie takiego problemu ?


Pozdrawiam, Ryszard

Pozostało 580 znaków

2009-02-28 15:35
Rev
0

Ustaw sobie ShowCheckBox na true i sprawdzaj właściwość Checked.


Pozostało 580 znaków

2009-02-28 16:29
0

albo sciagnij jakas paczke kontrolek 3rd party ktore maja bardziej rozbudowana kontrolke od dat i umozliwiaja np. skasowanie wartosci DEL'em


no to pojechałem z nieobecnością.. chwila przerwy i prawie rok przeleciał

Pozostało 580 znaków

2009-02-28 16:31
0

Do tej pory nie brałem pod uwagę CheckBox ponieważ odnosiłem wrażenie, że nie działa on zgodnie z oczekiwaniem.
Gdy otwieram tabelę i poruszam się po rekordach, gdzie 'Termin płatności' jest null, Checked jest ustawiony na 'false'.
Gdy wejdę na rekord z podanym terminem płatności, Checked przestawia się na 'true', ale po przejściu do następnych rekordów, gdzie znowu termin płatności jest null, Checked nie zmienia już wartości na 'false' - pozostaje trwale ustawiony na 'true' - ta więc sprawdzanie Checked nie miałoby sensu, chyba, że coś źle wykonuję ?


Pozdrawiam, Ryszard

Pozostało 580 znaków

2009-02-28 16:57
Rev
0

A gdzie masz napisane, że Checked zmienia wartość Value na null?
Dlaczego każdy oczekuje, że wszystko działać będzie tak jak on chce zaraz po przeciągnięciu kontrolki z Toolbox na formę?

class MyDateTimePicker : DateTimePicker
{
    public MyDateTimePicker()
    {
        this.ShowCheckBox = true;
    }

    protected override void OnKeyDown(KeyEventArgs e)
    {
        if (e.KeyData == Keys.Back)
        {
            this.MyValue = null;
        }
        base.OnKeyDown(e);
    }

    public DateTime? MyValue
    {
        get
        {
            if (this.Checked)
                return Value;
            else
                return null;
        }
        set
        {
            if (value == null)
                this.Checked = false;
            else
                this.Value = value.Value;
        }
    }
}

I używaj MyValue zamiast Value.


Pozostało 580 znaków

2009-02-28 17:14
2009-03-04 15:11
0

Dziękuję wszystkim za pomocne wskazówki.


Pozdrawiam, Ryszard

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0