2011-04-26 4 views
1

두 개의 드롭 다운리스트가 있습니다. 하나는 주이고 두 번째는 도시입니다. 사용자가 주를 클릭하면 두 번째 드롭 다운 목록에 데이터 테이블의 도시 이름이 채워지므로이를 만들려고합니다.변수를 동적 드롭 다운 목록에 전달

다음은 코드

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> 
<%--<cc2:CascadingDropDown ID="CascadingDropDown1" runat="server"> </cc2:CascadingDropDown>--%> 
<h1>Live Event Search Engine</h1><br /> 
State: <asp:DropDownList ID="ddlState" runat="server" AutoPostBack="True" DataSourceID="SqlDataSource1" DataTextField="ST_Code" DataValueField="ST_Code" /><asp:SqlDataSource 
    ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:dbConnection %>" 
    SelectCommand="SELECT [ST_Code] FROM [State]"> 
    </asp:SqlDataSource> 
City: <asp:DropDownList ID="ddlCity" runat="server" DataSourceID="SqlDataSource2" DataTextField="RS_City" DataValueField="RS_City" /><asp:SqlDataSource 
    ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:dbConnection %>" 
    SelectCommand="web_PublicProgramListbyState" SelectCommandType="StoredProcedure"> 
<SelectParameters> 
     <asp:SessionParameter Name="State" SessionField="ST_Code" Type="String" /> 
    </SelectParameters> 
</asp:SqlDataSource> 
     <asp:Button ID="Submit" runat="server" Text="Submit" /> 

</asp:Content> 

하고 코드 뒤에 ddlState_SelectedIndexChanged 이벤트가 세션 변수를 기록 어디 표시되지 않습니다

Public Sub ddlState_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ddlState.SelectedIndexChanged 
     Me.ddlCity.Items.Clear() 
     Dim da As New SqlDataAdapter("web_PublicProgramListbyState", New SqlConnection(ConfigurationManager.AppSettings("dbConnection"))) 
     Dim ds As New DataSet 
     da.Fill(ds, "@State") 
     da.Dispose() 
     Me.ddlCity.DataSource = ds.Tables("Products") 
     Me.ddlCity.DataTextField = "ProductName" 
     Me.ddlCity.DataValueField = "ProductID" 
     Me.ddlCity.DataBind() 
    End Sub 
End Class 
+0

그래서 당신이 묻고있는 문제는 무엇입니까? 오류가 있습니까? 작동하지 않습니까? –

+0

@Brian, 잘 작동하지 않습니다. "State"의 변수가 "City"로 전달되지 않고 City 드롭 다운 목록이로드되지 않습니다. 나는 단지 오류가 발생합니다. – FluxEngine

+0

코드는 도시가 아닌 프로그램의 바인딩을 보여 줍니까? 어쨌든, 아래에 게시됩니다. –

답변

1

이미 SqlDataSource가 정의되어있을 때 데이터 집합을 가져 오려고하는 것처럼 보입니다. 단지의 SqlDataSource의 매개 변수를 수정하고 재 바인드 :

Public Sub ddlState_SelectedIndexChanged(...) 
    SqlDataSource2.SelectParameters.Clear() 
    SqlDataSource2.SelectParameters.Add(New Parameter("@State", DbType.String, ddlState.SelectedValue)) 
    ddlCity.DataBind() 
End Sub 

편집 : 또는 당신은 다른 답변에서 언급 한 바와 같이 SqlDataSource2.SelectParameters에 ddlState.SelectedValue을 참조하는 ControlParameter을 사용할 수 있습니다. 트릭을 만들려면 디폴트 값을주의 깊게 관리해야하므로 ddlCity는 원할 때만 바인드합니다.

0

입니다. 이것은 필수 항목입니다.

1

컨트롤 패러미터로 변경하고 데이터 바인딩을 호출합니다. 직접 채울 필요가 없습니다.

Me.ddlCity.DataBind() 

을 아니면 모두 함께 코드 숨김을 제거 할 경우 트리거 업데이트 패널에 넣어 :

<asp:ControlParameter Name="State" ControlID="ddlState" Type="String" /> 

다음 select 이벤트에 바로 문의하십시오.

관련 문제