3

日付が dd.MM.yyyy のようにページに表示されるようにします。私は文化に依存しないこの方法が好きです。

どうすれば正しくなるかわかりません。

cmd.Parameters.Add("@eventdate", SqlDbType.Date).Value = dateAddTxtBox.Text;

形式の例外:

文字列は有効な DateTime として認識されませんでした

DateTime.ParseExact(dateAddTxtBox.Text, "dd.MM.yyyy", null)同様に、または使用して多くのスニペットを試しSystem.Globalization.CultureInfo.InvariantCultureました。何も助けませんでした!

あるいは、SQL プロシージャー側で行う方がよいのではないでしょうか。

CREATE PROCEDURE add_history
@user       VARCHAR(20),
@eventdate  DATE,
...
INSERT INTO History(userid, eventdate, ...)
VALUES ((SELECT userid FROM Users.SUsers WHERE suname=@user), @eventdate, ...)

TextBoxes をパターンでフォーマットしていない間は、すべてうまくいきました。

<asp:TextBox id="dateAddTxtBox" runat="server" ReadOnly="True" />
<asp:CalendarExtender ID="AddTxtBoxCalendarExtender" runat="server" Enabled="True" TargetControlID="dateAddTxtBox" Format="dd.MM.yyyy" ... />

更新:

余談 >> TextBox に read-only 属性がありました。それがうまくいかなかった理由です!

ここで問題は、スキップするのが正しいReadOnly="True"かどうかです。ユーザーがボックス内で日付を直接編集できないようにします。

UPD2:

ReadOnly="True"まったく意味がありません。正常に動作します。どうしてか分かりません。

4

1 に答える 1

2

指定しないでくださいSqlDbType.Date。代わりに自動検出に頼ってください。

System.DateTime dateValue = DateTime.ParseExact(...);
command.Parameters.AddWithValue("@name", dateValue);
于 2013-01-11T06:07:29.830 に答える