1

要求された日付がすでに終了している場合、ユーザーが新しいレコードを入力することを制限しようとしています。レコードが配置されるテーブルにすでにその日付が1であるかどうかを確認するためにカウントを試みていました。日付が記載されたテキストボックスにカレンダーエクステンダーがアタッチされています。

私は次のいずれかを取得し続けます:

文字列が有効な日時として認識されませんでした。

また

タイプ「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>
4

3 に答える 3

1

(!string.IsNullOrEmpty(startd.Text)) を確認します

経由:トランスポーター

于 2012-10-30T16:58:52.117 に答える
0

null のように見えるので、テキストが空または null でない場合にstartd.Textのみ行う必要があります。DateTime.ParseExact以下を使用できます。

if(!string.IsNullOrEmpty(startd.Text))
{
    // do stuff
}
于 2012-10-30T17:26:15.650 に答える
0

これ"Unable to cast object of type 'System.Web.UI.WebControls.TextBox' to type 'System.IConvertible'"は、textbox.Text ではなく、テキスト ボックス自体を解析しようとすると発生します。

このコードは正確にいつ実行されますか? ページの読み込み時に実行すると、テキストボックスが空になるため、空の文字列を解析しようとしていますが、これは明らかに正しい形式です。

于 2012-10-30T16:19:11.510 に答える