2012-10-30 47 views
1

我想限制用戶輸入新記錄,如果請求的日期已經退出。我試圖做一個計數,看看記錄將被放置的表是否已經有該日期1或不是0.我有一個日曆擴展器附加到一個文本框有日期。試圖將字符串轉換爲日期時間

我不斷收到或者是:

字符串未被識別爲有效的DateTime。

無法轉換類型 'System.Web.UI.WebControls.TextBox' 的目的爲類型 'System.IConvertible'。

取決於我嘗試過的不同的事情。

這是我的代碼。

TextBox startd = (TextBox)(DetailsView1.FindControl("TextBox5")); 
       TextBox endd = (TextBox)(DetailsView1.FindControl("TextBox7")); 
       DropDownList lvtype = (DropDownList)(DetailsView1.FindControl("DropDownList6")); 

       DateTime scheduledDate = DateTime.ParseExact(startd.Text, "dd/MM/yyyy", null); 
       DateTime endDate = DateTime.ParseExact(endd.Text, "dd/MM/yyyy", null); 

       DateTime newstartDate = Convert.ToDateTime(startd.Text); 
       DateTime newendDate = Convert.ToDateTime(endd.Text); 

       //foreach (DataRow row in sd.Tables[0].Rows) 
       DateTime dt = newstartDate; 

       while (dt <= newendDate) 
       { 
        //for retreiving from table 
        Decimal sd = SelectCountDate(dt, lvtype.SelectedValue, countDate); 

        String ndt = Convert.ToDateTime(dt).ToShortDateString(); 

        // //start = string.CompareOrdinal(scheduledDate, ndt); 
        // // end = string.CompareOrdinal(endDate, ndt); 

        //trying to make say when leavetpe is greater than count 1 then throw error. 
        if (sd > 0) 
        { 
         Response.Write("<script>alert('Date Already Requested');</script>"); 
        } 
        dt.AddDays(1); 

       } 

^^^ 這個版本拋出:

/*-----------------------Original------------------------------------ 
       string scheduledDate = Convert.ToDateTime(endd).ToShortDateString(); 
       string endDate = Convert.ToDateTime(endd).ToShortDateString(); 
       -------------------------------------------------------------------*/ 

       /*----------10-30--------------------------------------- 
       DateTime scheduledDate = DateTime.Parse(startd.Text); 
       DateTime endDate = DateTime.Parse(endd.Text); 
       ------------------------------------------------------*/ 

我:「字符串未被識別爲有效日期類型」錯誤

但是,如果我有任何的這些替換字符串獲取「無法將類型爲」System.Web.UI.WebControls.TextBox「的對象轉換爲鍵入」System.IConvertible「。」錯誤。

我只是想阻止用戶輸入已經退出的記錄日期。

   <InsertItemTemplate> 
        <asp:TextBox ID="TextBox5" runat="server" Height="19px" 
         Text='<%# Bind("lstdate", "{0:MM/dd/yyyy}") %>' Width="67px"></asp:TextBox> 
        <asp:CalendarExtender ID="TextBox5_CalendarExtender" runat="server" Enabled="True" 
         TargetControlID="TextBox5"> 
        </asp:CalendarExtender> 
        <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" 
         ControlToValidate="TextBox5" ErrorMessage="*Leave Date Required" 
         ForeColor="Red"></asp:RequiredFieldValidator> 
        <br /> 
        <asp:CompareValidator ID="CompareValidator18" runat="server" 
         ControlToCompare="TextBox7" ControlToValidate="TextBox5" 
         ErrorMessage="Leave date cannot be after start date" ForeColor="Red" 
         Operator="LessThanEqual" ToolTip="Must choose start date before end date"></asp:CompareValidator> 
       </InsertItemTemplate> 
+0

當得到這個異常時,看到傳遞的實際字符串會有幫助。 – nieve

+0

我編輯它顯示aspx代碼?即使進入頁面,該錯誤也會阻止我。 – user1596472

+0

DateTime scheduledDate = DateTime.ParseExact(startd.Text,「dd/MM/yyyy」,null); – user1596472

回答

0

因爲它似乎startd.Text爲空,你應該只做DateTime.ParseExact如果文本不爲空或空。你可以使用:

if(!string.IsNullOrEmpty(startd.Text)) 
{ 
    // do stuff 
} 
0

當您嘗試解析文本框本身而不是textbox.Text時,會出現"Unable to cast object of type 'System.Web.UI.WebControls.TextBox' to type 'System.IConvertible'"

何時執行此代碼?如果它在加載頁面時執行,文本框將是空的,所以你試圖解析一個空字符串,這顯然是正確的格式。

+0

這樣做會拋出「字符串未被識別爲有效的日期時間」。錯誤。 – user1596472

+0

代碼在DetailsView1_DataBound事件上執行 – user1596472

1

支票

通過(string.IsNullOrEmpty(startd.Text)!):tranceporter

相關問題