如果请求的日期已经退出,我试图限制用户输入新记录。我试图做一个计数,以查看记录所放置的表是否已经具有该日期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 :(得分:1)
检查(!string.IsNullOrEmpty(startd.Text))
via:tranceporter
答案 1 :(得分:0)
当您尝试解析文本框本身而不是textbox.Text时,会出现"Unable to cast object of type 'System.Web.UI.WebControls.TextBox' to type 'System.IConvertible'"
。
这段代码到底是什么时候执行的?如果在加载页面时执行它,则文本框将为空,因此您尝试解析空字符串,这显然是正确的格式。
答案 2 :(得分:0)
由于似乎startd.Text
为空,因此如果文本不为空或为空,则只应执行DateTime.ParseExact
。您可以使用:
if(!string.IsNullOrEmpty(startd.Text))
{
// do stuff
}