1

In a detailsview I have a drop down list whose selection determines the list in a second Drop down list. When the web page loads all my "Get Data" Functions load the various Drop down boxes. After I make a selection in the first of the two related drop down boxes I call an "index changed" function that takes the value of the first drop down box, as a variable, and puts it into a SQL statement. This SQL statement runs correctly inside SQL. However, the second drop down doesn't reload with the new data the values in the second drop down remain the same. Here is the pertinent code:

` <asp:TemplateField HeaderText="Planting Hatchery">
    <ItemTemplate>
        <asp:Label ID="lblPlantHatch" runat="server" Text='<%# Eval  ("HatcheryCodePlant")%>' Visible = "true"></asp:Label>
   </ItemTemplate>
   <insertItemTemplate>
        <asp:DropDownList ID="ddPlantingHatchery" runat="server" DataSource='<%# GetPlantingHatchery()%>'DataTextField="HatcheryNamePlant" DataValueField="HatcheryCodePlant" width= "150" AppendDataBoundItems="true" AutoPostBack="true"
OnSelectedIndexChanged="ddPlantingHatchery_indexchanged"> 
  <asp:ListItem Text="Select" Value="" />
     </asp:DropDownList>
  </insertItemTemplate>
 </asp:TemplateField>

<asp:TemplateField HeaderText="Water Body Name">
  <ItemTemplate>
     <asp:Label ID="lblStreamName" runat="server" Text='<%# Eval("CatalogNo")%>' Visible = "true"></asp:Label>
  </ItemTemplate>
  <insertItemTemplate>
    <asp:DropDownList ID="ddCatalogName" runat="server" DataSource='<%#  GetCatalogNames()%>' 
    DataTextField="StreamName" DataValueField="CatalogNo" AppendDataBoundItems="true" > 
    <asp:ListItem Text="Select" Value="" />
       </asp:DropDownList>
          <asp:ObjectDataSource ID="dsWaterBody" runat="server" TypeName="StreamName"
        <SelectMethod="GetCatalogNames">
           <SelectParameters>
             <asp:ControlParameter Name="HatcheryCodePlant" Type="string" ControlID="ddPlantingHatchery" PropertyName="Selectedvalue"/>
           </SelectParameters>
              </asp:ObjectDataSource>
          </insertItemTemplate>`

This is the Code Behind:`
Public Function GetPlantingHatchery() As DataSet

    Dim myConnection As New SqlConnection(ConnectionString)

    Dim ad As New SqlDataAdapter("SELECT HatcheryNamePlant, HatcheryCodePlant FROM HatcheryPlant Order by HatcheryNamePlant", myConnection)

    Dim ds As New DataSet()

    ad.Fill(ds, "HatcheryPlant")

    Return ds
End Function

Public Function GetCatalogNames() As DataSet
           Dim myConnection As New SqlConnection(ConnectionString)
    Dim ad As New SqlDataAdapter("SELECT StreamName, CatalogNo, HatcheryNamePlant, HatcheryCodePlant, LLID FROM vwStockingWatersByHatchery Order By StreamName", myConnection)
    Dim dsWaterBody As New DataSet()
    ad.Fill(dsWaterBody, "Catalog")
    Return dsWaterBody

End Function

Public Function ddPlantingHatchery_indexchanged(sender As Object, e As EventArgs)
   Try
        Dim ddCatNum As DropDownList = TryCast(dvSMasterCurrentYear.FindControl("ddCatalogName"), DropDownList)
        'ddCatNum.SelectedValue = TryCast(dvSMasterCurrentYear.FindControl("ddPlantingHatchery"), DropDownList).SelectedValue
        MySelectedValue = TryCast(dvSMasterCurrentYear.FindControl("ddPlantingHatchery"), DropDownList).SelectedValue
        Dim myConnection As New SqlConnection(ConnectionString)
        Dim ad As New SqlDataAdapter("SELECT StreamName, CatalogNo, HatcheryNamePlant, HatcheryCodePlant, LLID FROM vwStockingWatersByHatchery where HatcheryCodePlant = '" + MySelectedValue + "' Order By StreamName", myConnection)
        Dim dsWaterBody As New DataSet()
        ad.Fill(dsWaterBody, "Catalog")
        Return dsWaterBody
    Catch ex As Exception
    End Try`

What do I need to do to load the second Drop down list with the new data?

jim davis
  • 63
  • 3

0 Answers0