Reputation: 155
I am trying to restrict a user from entering a new record if the date requested already exits. I was trying to do a count to see if the table that the record would be placed in already has that date 1 or not 0. I have a calendar extender attached to a text box which has the date.
I keep getting either a:
String was not recognized as a valid DateTime.
or
Unable to cast object of type 'System.Web.UI.WebControls.TextBox' to type 'System.IConvertible'.
depending on the different things I have tried.
Here is my code.
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);
}
^^^ This version throws the: "String was not recognized as valid date type" error
But if i replace the string with either of these :
/*-----------------------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);
------------------------------------------------------*/
I get the "Unable to cast object of type 'System.Web.UI.WebControls.TextBox' to type 'System.IConvertible'." error.
I am just trying to stop a user from entering a record date that already exits.
<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>
Upvotes: 0
Views: 1547
Reputation: 2261
Since it seems that startd.Text
is null, you should only do DateTime.ParseExact
if the text is not empty or null. You can use:
if(!string.IsNullOrEmpty(startd.Text))
{
// do stuff
}
Upvotes: 0
Reputation: 155
check for (!string.IsNullOrEmpty(startd.Text))
via : tranceporter
Upvotes: 1
Reputation: 29243
The "Unable to cast object of type 'System.Web.UI.WebControls.TextBox' to type 'System.IConvertible'"
occurs when you try to parse the textbox itself instead of the textbox.Text.
When exactly is this code executed? If it's executed when loading the page, the textboxes will be empty so you're trying to parse an empty string, which is obviously to the correct format.
Upvotes: 0