使用textmode localdatetime将文本框绑定到ObjectDataSource中未评估的DateTime-Field

时间:2015-05-05 16:40:19

标签: c# asp.net datetime

我正在尝试这个:

cin >> decimal_number

时间戳显示正确 - 但是当我进入编辑模式时,我会从一个装满占位符的文本框开始。因此,<asp:GridView ID="GridView1" runat="server" DataSourceID="ReleasesDataSource" AutoGenerateColumns="False" AllowPaging="true" AllowSorting="true" AutoGenerateEditButton="true" AutoGenerateDeleteButton="true" PageSize="35" ShowFooter="True" ShowHeaderWhenEmpty="True"> <Columns> <asp:TemplateField HeaderText="Release timestamp"> <ItemTemplate> <asp:Label ID="preTimeLabel" runat="server" Text='<%# Eval("preTime") %>'></asp:Label> </ItemTemplate> <EditItemTemplate> <asp:TextBox ID="preTimeTextBox" runat="server" Text='<%# Bind("preTime"") %>' TextMode="DateTimeLocal"></asp:TextBox> </EditItemTemplate> </asp:TemplateField> ............ 的{​​{1}}字段中的当前DateTime - 值未按我期望的preTime preTime`-Field进行评估。

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

如果您想要包含时间,则需要Bind("preTime", "{0:yyyy-MM-dd}")Bind("preTime", "{0:yyyy-MM-ddTHH:mm}")才能解决此问题。

答案 1 :(得分:0)

尝试

<asp:TextBox ID="preTimeTextBox" runat="server" Text='<%# Convert.ToDateTime(Bind("preTime")).ToString("d") %>'></asp:TextBox>

另一种解决方案是为网格中的TextBox实现OnDataBinding事件。     

 protected void txtDate_OnDataBinding(object sender, System.EventArgs e)
{
TextBox txt = (TextBox)(sender);
txt.Text = (DateTime)(Bind("YourDateField")).ToString("MM/dd/yyyy");
}