2012-01-27 32 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 2012-01-27 03:53:32

回答

1

你的邏輯看起來很合理。

如果你想爲你改變每個DropDownList的值,以儘快反映的變化,你需要將AutoPostBack="True"屬性添加到他們每個人的。作爲一個例子,這是第一個將是什麼樣子:

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" 
    DataSourceID="SqlDataSource1" DataTextField="a" DataValueField="a"> 
</asp:DropDownList> 

我可以看到,會導致你的表不填寫的唯一的另一件事是,如果你GridView的SQL查詢限制過多。也許你打算在WHERE條款中使用OR而不是AND

編輯:這裏還有一個想法,它可能是你的GridView是所有DropDownList S的前是數據綁定已經被數據綁定。這會導致他們沒有SelectedValues,所以當GridView得到數據時,你的ControlParameters不會有值。你需要找出一種方法來等待所有DropdownLists是數據綁定,然後使用此代碼來重新綁定您的GridView

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

提示:要檢查並確保這是你的問題,你可以把這些代碼中的每一個DropDownListS的_DataBound事件。效率不高,但應該有效。

+0

輸出沒有變化..:/ – Kaushank 2012-01-27 07:34:21

+0

@ankurkaushal我爲此添加了另一種可能的解決方案。 – jadarnel27 2012-01-27 13:19:41

+0

@ankurkaushal你檢查我更新的reccomendation嗎? – jadarnel27 2012-02-22 14:54:00