अलग-अलग दिनांक माह वर्ष के लिए डेटाबेस में वैध तिथि कैसे दर्ज करें

मेरे पास मेरे प्रोजेक्ट में पंजीकरण फॉर्म है जिस पर मैंने दिन, महीने और साल में प्रवेश करने के लिए तीन ड्रॉपडाउनलिस्ट का इस्तेमाल किया था। इस तिथि में codebehind विधि द्वारा ड्रॉपडाउन सूची में जोड़ा गया:

private void Add_Date()
{
    ddl_dat.Items.Add(new ListItem("-Date-", "-1"));
    for (int j = 0; j < 31; j++)
    {
        var newOption = new ListItem("" + (j + 1).ToString(), j.ToString());
        ddl_dat.Items.Add(newOption);
    }
}

और मैं महीने ड्रॉपडाउन सूची में मैन्युअल रूप से 12 महीने जोड़ता हूं। मैं चाहता हूं कि उपयोगकर्ता 2 9 फीब या 31 अप्रैल में प्रवेश न करें। मैंने फॉर्म जमा करने से पहले जांच सेब करके यह किया:

if (ddl_year.SelectedIndex != -1 && ddl_dat.SelectedIndex != -1 && ddl_mon.SelectedIndex != 0)
{
    if (ddl_mon.SelectedIndex == 2 && ddl_dat.SelectedIndex >= 28)
    {
        lbl_alert.Text = Convert.ToInt32(ddl_dat.SelectedValue)+ 1 + " Febuary Doesn't Exist";
    }
}

अन्य सभी महीनों के लिए एक ही विधि। लेकिन मुझे नहीं लगता कि यह समस्या हल करने के लिए यह सही तरीका है। क्या किसी के पास कोई सुझाव है?

1
जोड़ा संपादित
विचारों: 1
ऐसा करने का यह एक तरीका है। हालांकि केवल 30 दिनों के साथ महीनों के बारे में मत भूलना, और वर्षों को छलांग लगाना - जहां फरवरी में वास्तव में 2 9 दिन होते हैं। कैलेंडर नियंत्रण का उपयोग करना भी एक अच्छा विकल्प है।
जोड़ा लेखक rhughes, स्रोत

3 उत्तर

चूंकि यह एएसपी.नेट है, इसलिए आप एजेक्स के माध्यम से डेट कम्बोबॉक्स ऑन-द-फ्लाई की सामग्री को गतिशील रूप से भरने के लिए UpdatePanel का उपयोग कर सकते हैं। इसके बाद आप एक महीने में दिनों की सटीक संख्या का पता लगाने के लिए DateTime.DaysInMonth() का उपयोग कर सकते हैं। आपको अपनी तिथि combobox दोनों महीने और वर्ष ड्रॉपडाउन <�कोड> चयनित इंडेक्स चेंज पर अपडेट करना चाहिए। इस प्रकार आपका उपयोगकर्ता पहली जगह गलत तिथियों का चयन नहीं कर पाएगा, इसलिए किसी भी त्रुटि को संभालने की आवश्यकता नहीं है।

वैकल्पिक रूप से jQuery में जावास्क्रिप्ट कैलेंडर उपलब्ध है जो आपके जीवन को आसान बना सकता है।

2
जोड़ा
डॉटनेट का जवाब देने के लिए धन्यवाद। आपका जवाब अच्छा है। लेकिन AJAX मेरे सर्वर पर काम नहीं कर रहा है इसलिए मैं इसे कोडिंग करके करना चाहता हूं।
जोड़ा लेखक Vikas Rana, स्रोत

फॉर्म सबमिट करने से पहले इस चेक को लागू करें:

string str = ddl_dat.SelectedValue + "/" + ddl_mon.SelectedValue + "/"
                + ddl_year.SelectedValue;
DateTime dt;
if(!DateTime.TryParse(str, out dt))
   //Invalid date - Show error
else
   //Use date from dt here

यदि तिथि अमान्य है <�कोड> TryParse झूठी वापसी होगी। अन्यथा आप आगे के ऑपरेशन के लिए dt चर से परिणामी दिनांक का उपयोग कर सकते हैं।

2
जोड़ा
पी 5 कोडर का जवाब देने के लिए thnks
जोड़ा लेखक Vikas Rana, स्रोत

DateTime.TryParse should help you.

DateTime dateValue;
string dateString = ddl_year.SelectedValue + "-" + ddl_mon.SelectedValue + "-" + ddl_dat.SelectedValue;
if (! DateTime.TryParse(dateString, out dateValue)) {
    //Error...
}
1
जोड़ा
kryssthanel ऑनर त्रुटि आपके उत्तर में है आप तारीख के बारे में घोषणा नहीं करते हैं
जोड़ा लेखक Vikas Rana, स्रोत
जोड़ा गया;) धन्यवाद
जोड़ा लेखक Kryssthanel, स्रोत