如何在数据库上的日期显示DropDownList上的时间?

时间:2012-03-23 11:50:23

标签: asp.net vb.net gridview drop-down-menu

我有一个从数据库中检索的日期。我希望能够在gridview上编辑时间,因为我的日期是日期+时间,我想在下拉列表中将我的数据库上的时间显示为我选择的值,并且能够从列表中选择其他时间并保存回来再次使用数据库上的日期+时间。

最好的方法是什么?

            <asp:TemplateField HeaderText="Start Time" SortExpression="SelectionStartDate">

                  <EditItemTemplate>
                  <asp:DropDownList ID="SelectionStarttime1" runat="server"  Text='<%# GetTime(Eval("SelectionStartDate", "{0:dd-MM-yyyy HH:mm:ss}")) %>' Width="120px">                        
                         <asp:ListItem Value="10:00:00">Midday (12:00 AM)</asp:ListItem>
                         <asp:ListItem Value="17:00:00">End Day(05:00 PM)</asp:ListItem>
                         <asp:ListItem Value="23:59:59">Midnight End</asp:ListItem>
                     </asp:DropDownList>  
                      </EditItemTemplate>                
                 <ItemTemplate>              
                    <asp:Label ID="lblStarttime1" runat="server" Text='<%# GetTime(Eval("SelectionStartDate", "{0:dd-MM-yyyy HH:mm:ss}")) %>' ></asp:Label>
                </ItemTemplate> 
            </asp:TemplateField>

我的VB上有以下内容

Protected Function GetTime(ByVal time As String) As String

        Return time.Substring(11)

    End Function

提前致谢

1 个答案:

答案 0 :(得分:0)

您可以使用TimeSpan.Parse将时间部分转换为TimeSpan个实例。然后,您可以将其添加到Date实例以获取完整的DateTime。

Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs)
   Dim row = GridView1.Rows(e.RowIndex)
   Dim ddl =  DirectCast(row.FindControl("SelectionStarttime1"), DropDownList)
   Dim oldStartDate = Date.Parse(DirectCast(row.FindControl("HiddenStartDate"), HtmlInputHidden).Value)
   Dim newTime = TimeSpan.Parse(ddl.SelectedValue)
   Dim startDate = oldStartDate.Date.Add(newTime)
   SaveData(params) ' pseudo-code '
End Sub

请注意,我使用了Hiddenfield(您必须添加到模板中)来存储完整的日期时间,您也可以直接从数据源获取它(如果存储在会话中或通过查询,则为fe)。