2012-01-27 71 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