2012-01-27 2 views
1

나는이 코드를 가지고 있으며 드롭 다운 상자에서 sql 쿼리를 수행하려고합니다.테이블에 드롭 다운 상자의 결과 표시

<html> 
    <body> 
     <form id="form1" runat="server"> 
      <asp:DropDownList ID="DropDownList1" runat="server" 
       DataSourceID="SqlDataSource1" DataTextField="a" DataValueField="a"> 
      </asp:DropDownList> 
      <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
       ConnectionString="<%$ ConnectionStrings:DB_firstConnectionString7 %>" 
       SelectCommand="SELECT DISTINCT [a] FROM [Table_1]"></asp:SqlDataSource> 
      <br /> 
      <br /> 
      <asp:DropDownList ID="DropDownList2" runat="server" 
       DataSourceID="SqlDataSource2" DataTextField="b" DataValueField="b"> 
      </asp:DropDownList> 
      <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
       ConnectionString="<%$ ConnectionStrings:DB_firstConnectionString8 %>" 
       SelectCommand="SELECT DISTINCT [b] FROM [Table_1]"></asp:SqlDataSource> 
      <br /> 
      <br /> 
      <asp:DropDownList ID="DropDownList3" runat="server" 
       DataSourceID="SqlDataSource3" DataTextField="c" DataValueField="c"> 
      </asp:DropDownList> 
      <asp:SqlDataSource ID="SqlDataSource3" runat="server" 
       ConnectionString="<%$ ConnectionStrings:DB_firstConnectionString9 %>" 
       SelectCommand="SELECT DISTINCT [c] FROM [Table_1]"></asp:SqlDataSource> 
      <br /> 
      <br /> 
      <br /> 
      <asp:DropDownList ID="DropDownList4" runat="server" 
       DataSourceID="SqlDataSource4" DataTextField="d" DataValueField="d"> 
      </asp:DropDownList> 
      <asp:SqlDataSource ID="SqlDataSource4" runat="server" 
       ConnectionString="<%$ ConnectionStrings:DB_firstConnectionString10 %>" 
       SelectCommand="SELECT DISTINCT [d] FROM [Table_1]"></asp:SqlDataSource> 
      <br /> 
      <br /> 
      <br /> 
      <br /> 
      <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
       DataSourceID="SqlDataSource5"> 
       <Columns> 
        <asp:BoundField DataField="a" HeaderText="a" SortExpression="a" /> 
        <asp:BoundField DataField="b" HeaderText="b" SortExpression="b" /> 
        <asp:BoundField DataField="c" HeaderText="c" SortExpression="c" /> 
        <asp:BoundField DataField="d" HeaderText="d" SortExpression="d" /> 
        <asp:BoundField DataField="e" HeaderText="e" SortExpression="e" /> 
        <asp:BoundField DataField="f" HeaderText="f" SortExpression="f" /> 
       </Columns> 
      </asp:GridView> 
      <asp:SqlDataSource ID="SqlDataSource5" runat="server" 
       ConnectionString="<%$ ConnectionStrings:DB_firstConnectionString11 %>" 
       SelectCommand="SELECT [a], [b], [c], [d], [e], [f] FROM [Table_1] WHERE (([a] = @a) AND ([b] = @b) AND ([c] = @c) AND ([d] = @d))"> 
       <SelectParameters> 
        <asp:ControlParameter ControlID="DropDownList1" Name="a" 
         PropertyName="SelectedValue" Type="String" /> 
        <asp:ControlParameter ControlID="DropDownList2" Name="b" 
         PropertyName="SelectedValue" Type="String" /> 
        <asp:ControlParameter ControlID="DropDownList3" Name="c" 
         PropertyName="SelectedValue" Type="String" /> 
        <asp:ControlParameter ControlID="DropDownList4" Name="d" 
         PropertyName="SelectedValue" Type="String" /> 
       </SelectParameters> 
      </asp:SqlDataSource> 
     </form> 
    </body> 
</html> 

작은 SQL 테이블이 있는데 드롭 다운 상자에서 값을 선택하면 해당 테이블에 결과가 표시됩니다. 나는 그것을 할 수 없다. 어떤 생각?

+0

코드를 약간 정리했습니다. 들여 쓰기가 전혀 안되면 그것을 읽는 것이 어렵습니다.) – jadarnel27

답변

1

논리가 소리가납니다. 당신은 당신이 각 DropDownList의 값을 변경하면 변경 내용이 즉시 반영 할 경우

, 당신은 각각에 AutoPostBack="True" 속성을 추가해야합니다. 예를 들어,이 처음은 다음과 같은 형태가 될 것이다

당신의 GridView에 대한 SQL 쿼리가 너무 제한되는 경우
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" 
    DataSourceID="SqlDataSource1" DataTextField="a" DataValueField="a"> 
</asp:DropDownList> 

내가 그 테이블이 작성되지 않는 원인이 볼 수있는 유일한 것입니다 . 아마도 WHERE 절에 AND 대신 OR 초를 사용하셨습니까?

편집 : 여기 한 번 더 생각, 그것은 당신의 GridView은 데이터 바인딩 된 당신의 DropDownList의의 모든 전에 을 바인딩되고 있음을 수 있습니다. 이로 인해 사용자는 아직 SelectedValues를 가지지 않으므로 ControlParameterGridView이 데이터 바인딩되었을 때 값을 가지지 않습니다.

SqlDataSource5.DataBind(); 
GridView1.DataBind(); 

힌트 : 당신은 당신의 GridView를 다시 바인딩 DropdownLists은 데이터 바인딩 된 모든 때까지 기다린 다음이 코드를 사용하는 방법을 알아낼해야합니다 확인하고 있는지 확인하기 위해이 방법으로 문제가 있음 , 해당 코드를_DataBoundDropDownList중 하나의 코드에 넣을 수 있습니다. 별로 효율적이지는 않지만 작동해야합니다.

+0

출력에 변화가 없습니다. :/ – Kaushank

+0

@ankurkaushal이 asnwer에 또 다른 가능한 해결책을 추가했습니다. – jadarnel27

+0

@ankurkaushal 업데이트 된 추천을 확인하셨습니까? – jadarnel27

관련 문제