日付が 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"
まったく意味がありません。正常に動作します。どうしてか分かりません。