2014-09-19 26 views
1

此代碼被調用並且所有對象都已設置,並且代碼在我追蹤它時運行,它通過循環將時間項添加到組合中開始和結束,我看到它跟蹤它的方式。跟蹤還顯示按計算的有效數量的項目。但是,當我在運行此代碼後查看asp網站時,我所使用的名爲(DropStartTime和DropEndTime)的下拉列表不會在其項目中添加它們的值。將項目添加到下拉列表的代碼中,但在結果頁面中看不到它

我希望它很清楚。

公用Sub GenerateTime(rowIndex位置爲整數)

Dim ComboStart As DropDownList 
    Dim ComboEnd As DropDownList 
    Dim ItemList As ListItem 
    Dim TimeInterval As Integer 
    Dim IntervalleCalcul As Integer 
    Dim NombreIntervalles As Integer 
    Dim HeureCalcule As String 
    Dim Laps As Integer 

    GridDetails.EditIndex = RowIndex 
    GridDetails.DataBind() 

    ComboStart = GridDetails.Rows(RowIndex).FindControl("DropStartTime") 
    ComboEnd = GridDetails.Rows(RowIndex).FindControl("DropEndTime") 

    If Not IsNothing(ComboStart) Or Not IsNothing(ComboEnd) Then 

     ComboStart.Items.Clear() 
     ComboEnd.Items.Clear() 
     ' -------------------------------------------- 
     ' DETERMINATION DES PARAMETRES D'INTERVALLES 
     ' -------------------------------------------- 
     Select Case TimeInterval 
      Case 5 
       IntervalleCalcul = 12 
       Laps = 5 
      Case 10 
       IntervalleCalcul = 6 
       Laps = 10 
      Case 15 
       IntervalleCalcul = 4 
       Laps = 15 
      Case 30 
       IntervalleCalcul = 2 
       Laps = 30 
      Case 60 
       IntervalleCalcul = 1 
       Laps = 60 
      Case Else 
       IntervalleCalcul = 4 
       Laps = 15 

     End Select 

     NombreIntervalles = 24 * IntervalleCalcul 
     HeureCalcule = "00:00" 
     ItemList = New ListItem 
     ItemList.Text = HeureCalcule 
     ItemList.Value = HeureCalcule 

     ComboStart.Items.Add(ItemList) 
     ComboEnd.Items.Add(ItemList) 
     For Compteur = 1 To NombreIntervalles - 1 
      HeureCalcule = CalculerTemps(HeureCalcule, Laps) 
      ItemList = New ListItem 
      ItemList.Text = HeureCalcule 
      ItemList.Value = HeureCalcule 
      ComboStart.Items.Add(ItemList) 
      ComboEnd.Items.Add(ItemList) 
     Next Compteur 

    End If 

End Sub 

現在這個代碼excutes,去的96倍預期的循環,並添加項目到兩個連擊,在代碼中。但是當我調用這個後去asp網站時,組合框沒有添加任何項目,我認爲應該是這個函數被調用。當然也沒有錯誤報告。

幫助:)

回答

0

有點羅嗦的評論,不是一個真正的偉大的答案雖然 - 因爲你給出的Page_Load,並沒有回傳的信息,這僅僅是一個開始最好的猜測。

您很可能不會考慮與ASP.NET相關的控件創建。我的意思是,如果你的代碼是類似於下面的代碼,那麼代碼正確填充的下拉框實際上會被銷燬,並在加載/回發時創建新代碼。

  1. 用下拉框加載頁面。 (Load_1)
  2. 按下按鈕即可呼叫GenerateTime sub
  3. GenerateTime子運行並正常工作。
  4. 頁面被回傳。
  5. Page_Load再次運行。 (Load_2)
  6. 由於Load_2而在頁面上創建的下拉列表與GenerateTime在運行時不同,它們基本上已被銷燬並重新創建。

您可能需要考慮何時創建控件以及如何處理回發。可能考慮在Page_Load中包裝某些代碼周圍

If Not Page.IsPostBack 

希望這是一些幫助。

編輯 - 注意到它們是動態控件。此鏈接可能有所幫助。 http://www.codeproject.com/Articles/3684/Retaining-State-for-Dynamically-Created-Controls-i

+0

感謝您的快速響應我非常感謝它。我也有一個按鈕和一個日曆控件,它們是gridview編輯項目,我對這些項目所做的任何操作都可以正常工作,只是我使用的下拉列表不想正常工作。我沒有Page_Load中的代碼我在rowediting事件中的代碼: '如果沒有的IsPostBack然後 GridDetails.EditIndex = e.NewEditIndex GridDetails.DataBind() GenerateTime(GridDetails.EditIndex) 結束如果 ',僅此而已。我以前做過這個,但它是用C1ComboBox,但嘿邏輯是邏輯沒有? :) – 2014-09-19 13:01:10

+0

我一直在儘可能地避開Gridviews。我注意到你正在創建下拉對象,然後在gridrow中找到正確的對象 - 這不僅僅是缺少Gridview.Refresh或類似的東西嗎? (只是一個想法) – 2014-09-19 13:47:00

+0

它可能是我將不得不整體刷新,以確保但爲什麼我需要做的像dropdownlists的東西,而不必做它的日曆控制?不應該所有這些都一樣嗎?現在,除了gridview控件還有另外一個免費的可用gridview控件嗎?它必須是免費的,因爲我現在沒有財務購買一臺? – 2014-09-19 14:12:39

相關問題