2009-06-01 25 views
2

これを行うにはインターネット上でいくつかの例が見つかりましたが、VBで動作させるには本当に苦労しています。 (コンバータを試しましたが、結果が混在していました)他のDropDownListに基づいてドロップダウンリストを作成するVB

最初のドロップダウンリストの異なる値に基づいて、ドロップダウンリストの選択オプションを設定する必要があります。

VBでreleativleyの簡単な例を手伝ってもらえますか?値がスクリプト内で「ハードコードされている」場合は騒がしくなりません。またはテーブルからデータを引き出すSQLビット

ありがとうございます!

あなたの最良のオプションは、最初の のDropDownListSelectedIndexChangedイベントをキャプチャすること DropDownListコントロールの現在値が何であるかを調べ、その後、オフにした後、第2 のDropDownList内の項目を埋めるためにそれを使用することになります
+0

このコンバーターを試しましたか? http://www.developerfusion.com/tools/convert/csharp-to-vb/ – Nick

答えて

2

それが行われている方法は、

Example最初のドロップダウンのSelectedIndexChangedイベントで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" /> 
0

。そうするときは、最初のDropDownListのAutoPostBackプロパティを"true"に設定してください。

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

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

あなたが達成できますようにHTMLソースで

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 

関連する問題