有两个下拉列表框(DropDownList),暂定为A ,B。如果不选A中内容,选B中一项内容,则满足该内容的数据从数据库输出来;选A,不选B,满足A的输出来;即选A,又选B,同时满足A,B条件的输出来。请问怎么搞?关键怎么实现这三种条件判断,最好写点代码.能用或有帮助立即给分。

解决方案 »

  1.   

    根据条件拼sql
    sql="select * from table where 1=1 ";
    if(b.selected && a.selected)
      sql += " and ( key like '%b%' or key like '%a%')"
    else if(b.selected)
      sql += " and key like '%b%' ";
    else if(a.selected)
      sql += " and key like '%a%'";大致意思
      

  2.   

    AB应该有一个默认选项,就认为是不选的情况,我们把这种情况记为True。
    然后三种情况就统一为A&&B了。如果A不选那就是True&&B = B,B不选同上。
    其实True的情况也就是
      

  3.   

    我没有找到DropDownList控件,只有comboBox控件.
    bool SelectA = false,SelectB=false;
    string sql = "select * from t1 ";
                if (SelectA && !SelectB) { sql += "where [XXX]='" + comboBox1.SelectedValue.ToString() + "'"; }
                else if (!SelectA && SelectB) { sql += "where [XXX]='" + comboBox2.SelectedValue.ToString() + "'"; }
                else if (SelectA && SelectB) { sql += "where [XXX]='" + comboBox1.SelectedValue.ToString() + "' and [XXX]='" + comboBox1.SelectedValue.ToString() + "'"; }
                MessageBox.Show(sql);
                SelectA = SelectB = false;然后在
            private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
                SelectA = true;
            }
           private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
            {
                SelectB = true;
            }
      

  4.   

    根据A和B生成条件即可。    public partial class Form1 : Form
        {
            DataTable dt;
            DataView dv;
            public Form1()
            {
                InitializeComponent();            dt = new DataTable();
                dt.Columns.Add("ID", typeof(Int32));
                dt.Columns.Add("Name", typeof(string));
                dt.Columns.Add("Dept", typeof(string));            dt.Rows.Add(new object[] { 1, "张三", "生产科" });
                dt.Rows.Add(new object[] { 2, "李四", "资料科" });
                dt.Rows.Add(new object[] { 3, "王五", "人事科" });
                dt.Rows.Add(new object[] { 4, "Mark", "人事科" });
                dt.Rows.Add(new object[] { 5, "Jim", "外务科" });
                dv = dt.DefaultView;
                dataGridView1.DataSource = dv;
            }        private void cmbA_TextChanged(object sender, EventArgs e)
            {
                RefreshData();
            }        private void cmbB_TextChanged(object sender, EventArgs e)
            {
                RefreshData();
            }        // 刷新数据
            private void RefreshData()
            {
                string strCondition = string.Empty; // 条件
                string strA = cmbA.Text; // A内容
                string strB = cmbB.Text; // B内容
                if (!string.IsNullOrEmpty(strA))
                {
                    // 如果A有内容,生成符合A的条件
                    strCondition = "[Name] LIKE '%" + strA + "%'";
                }
                if(!string.IsNullOrEmpty(strB))
                {
                    // 如果B有内容,生成符合B的条件
                      // 要处理与已有条件的结合
                    strCondition += (string.IsNullOrEmpty(strCondition) ? "" : " AND ") + "[Dept] LIKE '%" + strB + "%'";
                }
                dv.RowFilter = strCondition;
            }
        }
      

  5.   

    在控件和sql上同时下功夫
    1 A,B 都有个默认项,如:"请选择" value 绑定为"%"
    2 "select 字段 from 表 where 条件a like '" +  A.SelectedValue + "' and 
    条件b LIKE '" + B.SelectedValue + "'"
    这样比楼上的都简单吧!