2012-03-23 6 views
0

私はデータベースから取得する日付があります。私は自分のグリッドビューで時間を編集する能力を与えたいと思っています。私の日付は日付+時刻です。データベースの時間をドロップダウンリストで選択した値として表示し、リストから別の時間を選択して保存し直したいもう一度データベースの日付+時刻を入力します。データベースの日付からDropDownListに時間を表示するには?

は何これを行うための最善の方法だろうか?

  <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> 

と私はあなたがあなたの時間の一部がTimeSpanインスタンスに変換するTimeSpan.Parseを使用することができ、私のVBの上、事前に

Protected Function GetTime(ByVal time As String) As String 

     Return time.Substring(11) 

    End Function 

おかげ

答えて

0

を次のように持っています。次に、これをDateインスタンスに追加して、完全なDateTimeを取得することができます。セッションに保存されている場合、私は完全な日時を保存するために(あなたが同様にあなたのテンプレートに追加しなければならないこと)のHiddenFieldを使用しました

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 

注意が、あなたはまた、FE(直接データソースからそれを得ることができますか、クエリを介して)。

関連する問題