2014-09-19 116 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

相关问题