2009-06-01 87 views
2

我發現了一些在互聯網上的例子來做到這一點,但真的努力讓它在VB中工作。 (嘗試過一個轉換器但結果不一樣)基於其他DropDownList填充下拉列表VB

我需要根據第一個下拉列表中的不同值來填充Dropdownlist的選擇選項。

任何人都可以幫助在VB中releativley簡單的例子嗎?如果腳本中的值是「硬編碼」,則不會發生混淆。或者是一個從表中提取數據的SQL位

在此先感謝!

+0

試過這個轉換器? http://www.developerfusion.com/tools/convert/csharp-to-vb/ – Nick 2009-06-01 21:23:45

回答

2

它做的方法是填充第二個下拉在第一個下拉列表的SelectedIndexChanged事件

Example

Protected Sub ddlCountry_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) 
    Dim CountryID As Integer = Convert.ToInt32(ddlCountry.SelectedValue.ToString()) 
    FillStates(CountryID) 
End Sub 


Private Sub FillStates(ByVal countryID As Integer) 
    Dim strConn As String = ConfigurationManager.ConnectionStrings("DatabaseConnectionString").ConnectionString 
    Dim con As New SqlConnection(strConn) 
    Dim cmd As New SqlCommand() 
    cmd.Connection = con 
    cmd.CommandType = CommandType.Text 
    cmd.CommandText = "Select StateID, State from State where CountryID [email protected]" 
    cmd.Parameters.AddWithValue("@CountryID", countryID) 
    Dim objDs As New DataSet() 
    Dim dAdapter As New SqlDataAdapter() 
    dAdapter.SelectCommand = cmd 
    con.Open() 
    dAdapter.Fill(objDs) 
    con.Close() 
    If objDs.Tables(0).Rows.Count > 0 Then 
    ddlState.DataSource = objDs.Tables(0) 
    ddlState.DataTextField = "State" 
    ddlState.DataValueField = "StateID" 
    ddlState.DataBind() 
    ddlState.Items.Insert(0, "--Select--") 
    Else 
    lblMsg.Text = "No states found" 
    End If 
End Sub 

的HTML源像這樣:

<asp:DropDownList ID="ddlState" runat="server" AutoPostBack="True"> 
    </asp:DropDownList> 

    <asp:DropDownList ID="ddlCountry" runat="server" 
    AutoPostBack="True" OnSelectedIndexChanged="ddlCountry_SelectedIndexChanged"> 
</asp:DropDownList> 
0

你最好的選擇將是捕捉SelectedIndexChanged事件第一下拉列表,檢查什麼的,目前價值下拉列表是什麼,然後用它來清除,然後在第二下拉列表填充項目。當您這樣做時,請記住將第一個DropDownList的AutoPostBack屬性設置爲"true"

2

你可以完成這聲明在ASPX頁面是這樣的:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:myConnString %>" SelectCommand="SELECT id, name FROM planets"></asp:SqlDataSource> 
<asp:DropDownList ID="ddlPlanets" AutoPostBack="true" DataTextField="name" DataValueField="id" DataSourceID="SqlDataSource1" runat="server" AppendDataBoundItems="true" /> 

<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:myConnString %>" SelectCommand="SELECT planetid, name FROM moons" FilterExpression="planetid = '{0}'"> 
    <FilterParameters> 
     <asp:ControlParameter Name="planetid" ControlID="ddlPlanets" PropertyName="SelectedValue" /> 
    </FilterParameters> 
</asp:SqlDataSource>  
<asp:DropDownList ID="ddlMoons" DataTextField="name" DataValueField="planetid" DataSourceID="SqlDataSource2" runat="server" /> 
相關問題