2009-05-04 11 views
5
MyDataSource.SelectParameters["startDate"].DefaultValue = 
            fromDate.SelectedDate.Date.ToString(); 

जैसा कि आप देख सकते हैं कि मैं अपने .Net SqlDataSource में पैरामीटर का डिफ़ॉल्ट मान सेट कर रहा हूं। मुझे नहीं लगता कि स्ट्रिंग सही प्रारूप को आउटपुट कर रही है। सही प्रारूप क्या है ताकि टी-एसक्यूएल डेटाटाइम ठीक से मेल खाए?मैं .NET डेटाटाइम को एक टी-एसक्यूएल डेटाटाइम

यहाँ स्वरूपों कि अभी outputted हैं कर रहे हैं:

  • 5/1/2009 12:00:00 पूर्वाह्न
  • 5/4/2009 11:59:59 PM पर

संपादित करें: इससे पहले कि मैं डेटा स्रोत जहां यह SQLDataSource

लिखा गया है चाहिए और यहाँ कुछ कोड

है था
<asp:SqlDataSource ID="MyDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:sampledb %>" SelectCommand="Recording_Select" SelectCommandType="StoredProcedure" OnSelecting="MyDataSource_Selecting"> 
    <SelectParameters> 
     <asp:ControlParameter ControlID="respondentID" DefaultValue="%" Name="RespondentID" PropertyName="Text" Type="String" /> 
     <asp:SessionParameter Name="projectCode" SessionField="proj" Type="String" /> 
     <asp:ControlParameter ControlID="interviewerList" Name="InterviewerID" PropertyName="SelectedValue" Type="String" /> 
     <asp:ControlParameter ControlID="dispCodeList" Name="dispCode" PropertyName="SelectedValue" Type="Int32" /> 
     <asp:ControlParameter ControlID="fromDate" DefaultValue="1/1/1900" Name="startDate" PropertyName="SelectedValue" Type="DateTime" /> 
     <asp:ControlParameter ControlID="toDate" DefaultValue="1/1/1900" Name="endDate" PropertyName="SelectedValue" Type="DateTime" /> 
    </SelectParameters> 
</asp:SqlDataSource> 

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

उत्तर

3

आप प्रारंभ में कैसे बना रहे हैं पैरामीटर? आप उस समय डेटाटाइप को डेटाटाइम के रूप में निर्दिष्ट करने में सक्षम होना चाहिए। फिर इसे एक स्ट्रिंग में बदलने की कोशिश करने के बजाय सीधे पैरामीटर पर अपना डेटाटाइम असाइन करें।


आपके द्वारा पोस्ट किए गए कोड के आधार पर, आपका सबसे अच्छा विकल्प शायद आपके नियंत्रण को पूर्व-संग्रहित करना है। इसके अतिरिक्त, यह उस संदर्भ में डिफ़ॉल्ट मान के लिए ठीक दिखता है, इसलिए मुझे संदेह है कि समस्या कहीं और है। नियंत्रण के CancelSelectOnNullParameter नियंत्रण की संपत्ति को सेट करने का प्रयास करें।

+0

अच्छे सुझाव। मैंने इसे पहले स्थान पर नहीं बनाया है इसलिए मुझे यह देखना होगा कि यह इस तरह से क्यों स्थापित नहीं हुआ है। –

+0

मुझे लगता है कि विज़ार्ड का उपयोग एसक्लडाटासोर्स स्थापित करने के लिए किया गया था और मुझे –

+0

टाइप करने का कोई तरीका नहीं दिख रहा था, इसे कुछ कोड उत्पन्न करना चाहिए था - यह उस कोड को देखने में मदद करेगा। –

3

मैं इस का प्रयोग करेंगे:

MyDataSource.SelectParameters["startDate"].DefaultValue = 
            fromDate.SelectedDate.Date.ToString("yyyyMMdd HH:mm:ss"); 
9

एक SqlDateTime struct SqlDateTime निर्माता में से एक में एक ही आर्ग लेता है के रूप में आप इस

DateTime DotNetDateTime = new DateTime(2009, 5, 4); 
System.Data.SqlTypes.SqlDateTime sqlDateTime = new System.Data.SqlTypes.SqlDateTime(DotNetDateTime); 

या सीधे एक लाइन में के लिए उपयोग कर सकते हैं (नहीं है .NET डेटटाइम क्लास के रूप में ओवरलोड):

System.Data.SqlTypes.SqlDateTime sqlDateTime = new System.Data.SqlTypes.SqlDateTime(2009, 5, 4); 
+0

मैं बस यह काम करने के लिए नहीं मिल सकता है। DefaultValue को एक स्ट्रिंग प्रकार की आवश्यकता होती है। –

+0

चयन पैरामीटर का मतलब है? YYYYMMDDHHMMSS सिस्टम के बीच दिनांक प्रकारों को स्थानांतरित करने के लिए माइक्रोसॉफ्ट के अनुशंसित प्रारूप है [इसलिए वे कहते हैं] वे सभी इसे सही ढंग से पहचानेंगे। – BenAlabaster

0

मैं हमेशा अपनी तारीखों को एमएमएम डीडी yyyy को पैरामीटर के रूप में गुजरने के दौरान मजबूर करता हूं, इस तरह से कोई गड़बड़ नहीं हो सकती है और चारों ओर फिसल जाती है।

2

इस चाल करना चाहिए:

MyDataSource.SelectParameters["startDate"].DefaultValue = fromDate.SelectedDate.Date.ToString("yyyy-MM-dd HH:mm:ss") 
+0

के साथ कोई भाग्य नहीं है किसी कारण से यह काम नहीं किया लेकिन मुझे नहीं पता कि क्यों। जांच। –

+0

यह सुनिश्चित करने के लिए कि वे मेल खाते हैं, अपने लोकेल (डेटाबेस और .NET दोनों) की जांच करें। – CMerat

+0

अभी भी कोई भाग्य नहीं ......... –

संबंधित मुद्दे