.net下拉框实现查询

.net下拉框实现查询功能

前端

<body>
    <form id="form1" runat="server">
    <div>
        <br />
        <table>
        <tr>
            <td>A:<asp:DropDownList ID="A" runat="server" AutoPostBack="true"  autoback="true">
                </asp:DropDownList> &nbsp&nbsp
                </td>
             <td>B:<asp:DropDownList ID="B" runat="server" AutoPostBack="true"   autoback="true">
                </asp:DropDownList>&nbsp&nbsp
             </td>
             <td>C:<asp:DropDownList ID="C" runat="server" AutoPostBack="true"  autoback="true">
                </asp:DropDownList>&nbsp&nbsp
             </td>
             <td>D:<asp:DropDownList ID="D" runat="server" AutoPostBack="true" autoback="true">
                </asp:DropDownList>&nbsp&nbsp
             </td>
             <td>
                <asp:Button ID="Select" runat="server" Text="Query" onclick="Query"  />
             </td>
       <tr>
        <asp:DataGrid id="dg0" align="left" width="90%" CellPadding="5" borderwidth="2" sortable="true" resizbale="true" HeaderStyle-HorizontalAlign="center" ItemStyle-HorizontalAlign="center" HeaderStyle-BackColor="SkyBlue" FooterStyle-BackColor="#CCCC99" FooterStyle-HorizontalAlign="center"  ItemStyle-BackColor="#E7FEE2" BorderColor="#999999" font-size="10"  Font-Names="Arial, 细明体" runat="server" ItemStyle-Wrap="true" AutoGenerateColumns="false" >
            <Columns >
                <asp:BoundColumn headertext="A" datafield="A"/>
                <asp:BoundColumn headertext="B" datafield="B"/>
                <asp:BoundColumn headertext="C" datafield="C"/>
                <asp:BoundColumn headertext="D" datafield="D" />
            </Columns> 
        </asp:DataGrid>
    </tr>
  </table>

后台

 public partial class _Default : System.Web.UI.Page
    {
        DataSet ds = new DataSet();
        DataSet ds1 = new DataSet();
        DataSet ds2 = new DataSet();
        SqlConnection DB= new SqlConnection(WebConfigurationManager.AppSettings["X"].ToString());
        //X是在webconfig里配置的数据库连接代码
        protected void Page_Load(object sender, EventArgs e)
        { 
            if (!IsPostBack)
            {
                getA();    //获取列值需放if里,下拉框改变值的时候跟着变
                getB();
                getC();
                getD();
                BindData(4);
            } 
        }
        private void BindData(int selectStatus) {          //筛选查询
            DB.Open();
            string sql_text=@"select * from table;";     //绑定数据到datagrid,默认全部查询
            if (selectStatus == 4)
            {
                sql_text = @"select * from table;";
            }
            if (selectStatus ==0)                                         //一个个添加查询条件
            {
                sql_text = @"select * from table where 1=1";           //where 1=1是为了方便加and
                if (A.SelectedValue != "ALL") {
                     sql_text += "and A='" + A.SelectedValue + "'";      //A.SelectedValue即id=A的下拉框选中的值
                }
                if (B.SelectedValue != "ALL") { 
                     sql_text += "and B='" + B.SelectedValue + "'";
                }
                if (C.SelectedValue != "ALL") { 
                     sql_text += "and C='" + C.SelectedValue + "'";
                }
                if (D.SelectedValue != "ALL") { 
                     sql_text += "and D='" + D.SelectedValue + "'";
                }
            }
           /* if (selectStatus == 1) {
                sql_text = @"select * from table where A='" + A.SelectedValue + "'";
            }
            if (selectStatus == 2)
            {
                sql_text = @"select * from table where B='" + B.SelectedValue + "'";
            }
            if (selectStatus == 3)
            {
                sql_text = @"select * from table where C='" + C.SelectedValue + "'";
            }*/
            SqlDataAdapter objAdapter = new SqlDataAdapter(sql_text, DB);
            objAdapter.Fill(ds, "table");    //数据库连接代码,获取数据,给到前端datagrid
            DataTable dt = new DataTable();
            dt = ds.Tables[0];
            dg0.DataSource = dt.DefaultView;
            dg0.DataBind();
            DB.Close();
        }
        private void getA() {   //获取列值展现在下拉框,getA()getB()getC()getD()逻辑都一样,就只写一个了,剩下的自己写咯
            DB.Open();
            SqlDataAdapter adp = new SqlDataAdapter(@"select distinct A from table",DB);
            adp.Fill(ds1, "A");
            DB.Close();
            A.DataSource = ds1.Tables["A"].Copy();
            A.DataTextField = "A";
            B.DataBind();
            B.Items.Insert(0, new ListItem("ALL"));  //下拉框加入ALL选项
        }

        protected void Query(object sender, EventArgs e)
        {
            BindData(0);    //执行查询并绑定数据
        }

    /*    protected void selectA(object sender, EventArgs e)   
        {
            if(A.SelectedValue=="ALL"){
                BindData(4);
            }
            BindData(0);
        }
        protected void selectB(object sender, EventArgs e)
        {
            if (B.SelectedValue == "ALL")
            {
                BindData(4);
            }
            BindData(1);
        }
        protected void selectC(object sender, EventArgs e)
        {
            if (C.SelectedValue == "ALL")
            {
                BindData(4);
            }
            BindData(2);
        }
        protected void selectD(object sender, EventArgs e)
        {
            if (D.SelectedValue == "ALL")
            {
                BindData(4);
            }
            BindData(3);
        }
        */
  }

我这里实现的是多个条件一起筛选,注释掉的代码是单独筛选,根据需要选择。我尽量把代码精简了。
if (!IsPostBack)以及ALL这个第一次做会不知道,要特别注意,其他还是挺好理解的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值