2011-01-05 3 views
4

오케이 정말이 사람들이 저를 도울 수 있기를 희망합니다. 지난 2 일간 그것을 알아 내려고 노력했으며 창밖으로 컴퓨터를 던져 버릴 것 같아서 물어볼 수도 있다고 생각했습니다. 여기에 첫 번째 :dropdownlist에 중복 된 항목이 있습니다!

두 개의 드롭 다운리스트가있는 하나의 웹 페이지를 디자인하고 있습니다. 하나는 자동차 만들기, 다른 하나는 모델 용, 별도의 SQLDataSources가있는 데이터베이스에 바인딩 된 것, 고유 한 문을 사용하는 것입니다. appendDataBoundItems = true로 설정하고 all이라는 항목을 추가하여 두 항목의 상단에 "모두"를 추가합니다. 그런 다음 쿼리 문자열로 작성하면 모든 모델 항목이 두 번 추가됩니다 (단, 데이터 바인딩 된 항목 만). 여기

내 코드입니다 :

<asp:DropDownList ID="DropDownMake" runat="server" 
     DataSourceID="SqlMakes" DataTextField="Make" DataValueField="Make" 
     AppendDataBoundItems="True" EnableViewState="False" AutoPostBack="True"> 
     <asp:ListItem Selected="True" Value="All">All</asp:ListItem> 
    </asp:DropDownList> 
    <asp:DropDownList ID="DropDownModel" runat="server" 
     AppendDataBoundItems="True" AutoPostBack="True" DataSourceID="SqlModels" 
     DataTextField="Model" DataValueField="Model" EnableViewState="False"> 
     <asp:ListItem>All</asp:ListItem> 
    </asp:DropDownList> 
    <asp:SqlDataSource ID="SqlMakes" runat="server" 
     ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
     SelectCommand="SELECT DISTINCT [Make] FROM [Parts]"> 
    </asp:SqlDataSource> 
    <asp:SqlDataSource ID="SqlModels" runat="server" 
     ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 


     SelectCommand="SELECT DISTINCT [Model] FROM [Parts] WHERE ([Make] = @Make)"> 
     <SelectParameters> 
      <asp:ControlParameter ControlID="DropDownMake" Name="Make" 
       PropertyName="SelectedValue" /> 
     </SelectParameters> 
    </asp:SqlDataSource> 

'그리고 VB 파일 : 나는 줄 "DropDownMake.SelectedValue = Request.QueryString을 ("확인 ")을"제거하면

Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init 
    DropDownMake.SelectedValue = Request.QueryString("Make") 
    DropDownModel.SelectedValue = Request.QueryString("Model") 
End Sub 

이 나던 더 이상 복제물을 생산하지 않습니다. 무슨 일 이니? 나는 아이폰 앱 전체를 개발하는 데 더 많은 시간을 할애했다는 것을 맹세한다. 누군가가 이것을 이해하는 데 도움이된다면 내가 당신을 위해 상을 만들어야 할 것 같다.

감사합니다.

+0

시도를 다시 게시하지 내부 코드를 넣습니다. – Laserson

답변

6

귀하의 databind 메서드가 두 번 발생할 수 있습니다 생각합니다. appendDataBoundItems=false을 설정하려고 시도한 다음 OnDataBound 이벤트에 대한 이벤트 처리기를 연결하고 대신 이벤트 처리기에 최상위 항목을 삽입 했습니까?

protected void yourDdlControl_DataBound(object sender, EventArgs e) 
{ 
    if (yourDdlControl.Items.Count > 0) 
    { 
      yourDdlControl.Items.Insert(0, "All"); 
      yourDdlControl.Items[0].Value = ""; 
      yourDdlControl.SelectedIndex = 0; 
     } 
    } 
} 

오케이, 그래서 C# 코드이지만 번역 할 수 있어야합니다. :) 또한 검색어 매개 변수의 존재 여부에 따라 DataBound에서 선택한 값을 설정할 수 있습니다.

1

는 SelectedValue 속성을 설정하기 전에 후 Page_Init 이벤트의 모든 드롭 다운을 취소 즉

If Not Page.IsPostBack Then 
    DropDownMake.SelectedValue = Request.QueryString("Make") 
    DropDownModel.SelectedValue = Request.QueryString("Model") 
End If 
관련 문제