2012-10-11 2 views
0

나는 ASP에서 DropDownList와 국가, 주 및 도시를 바인딩하려고합니다. VB.NET을 사용하는 NET. 문제는 내가 국가를 선택할 때 국가와 관련된 국가 목록을 표시하지 않는다는 것입니다. 나는 데이터베이스에 대한 MS 액세스 2003을 사용, 여기에 & 코드ASP의 DropDownList를 사용하여 국가,시 /도를 바인딩합니다. NET을 사용하여 VB.NET

Country Table 

내 테이블 테이블 나라 ( CountryID 지능 기본 키, COUNTRYNAME VARCHAR (30) )

CountryState 표를 작성

테이블 만들기 countryState ( StateID Int 주 키, CountryID Int 외래 키 참조 국가 (국가 ID), 주 VARCHAR (30) )

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    cnnOLEDB.ConnectionString = strConnectionString 
    If Not IsPostBack Then 
     Bind_ddlCountry() 
    End If 
End Sub 
Public Sub Bind_ddlCountry() 
    Dim cnnOLEDB As New OleDbConnection(strConnectionString) 
    cnnOLEDB.Open() 
    Dim cmd As New OleDbCommand("SELECT CountryID,CountryName FROM Country", cnnOLEDB) 
    Dim dr As OleDbDataReader = cmd.ExecuteReader() 
    ddlcountry.DataSource = dr 
    ddlcountry.Items.Clear() 
    ddlcountry.Items.Add("--Please Select country--") 
    ddlcountry.DataTextField = "CountryName" 
    ddlcountry.DataValueField = "CountryID" 
    ddlcountry.DataBind() 
    cnnOLEDB.Close() 
End Sub 

Public Sub Bind_ddlState() 
    Dim cnnOLEDB As New OleDbConnection(strConnectionString) 
    cnnOLEDB.Open() 
    'Dim cmd As New OleDbCommand("SELECT StateID, State FROM CountryState", cnnOLEDB) 
    Dim cmd As New OleDbCommand("SELECT StateID, State FROM CountryState WHERE CountryID='" & ddlcountry.SelectedValue & "'", cnnOLEDB) 
    Dim dr As OleDbDataReader = cmd.ExecuteReader() 
    ddlstate.DataSource = dr 
    ddlstate.Items.Clear() 
    ddlstate.Items.Add("--Please Select state--") 
    ddlstate.DataTextField = "State" 
    ddlstate.DataValueField = "StateID" 
    ddlstate.DataBind() 
    cnnOLEDB.Close() 

End Sub 
Protected Sub ddlcountry_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles ddlcountry.SelectedIndexChanged 
    Bind_ddlState() 
End Sub 

답변

1

CountryID는 정수이기 때문에, 당신은 당신이 SQL 쿼리의 WHERE 절에 따옴표가 필요하지 않습니다.

...WHERE CountryID = " & ddlcountry.SelectedValue, cnnOLEDB) 

또 다른 메모 - 일반적으로 변수를 매개 변수화해야합니다. 그렇지 않으면 잠재적 인 SQL 주입 공격을 위해 낮은 매달린 과일을 만듭니다.

+0

감사합니다. 정말 고마워요. – user692495

+0

이 문제가 해결 되었습니까? – CoderMarkus

+0

예,이 문제를 해결하십시오. – user692495

관련 문제