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, ...)

当我没有用模式格式化我的文本框时,一切都很好:

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

升级版:

稍微提一下>> TextBox 上有只读属性。这就是为什么它没有工作!

现在的问题是,跳过是否正确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 回答