我做了个查询,先查出产品类别以及类别说明,然后根据该产品类别和查询条件来查询产品,如果该产品类别下面没有满足条件的产品,那么就不用显示该产品类别及其说明了,所以datalist1中又套了一个datalist2,需要判断一下如果没有记录,就把datalist1中的这一行隐藏该怎么实现?

解决方案 »

  1.   

    没必要那么做
    你在表添加一条件列
    比如添加一列isshow 默认是0 显示1select * from 表 where isshow=1
      

  2.   

    如果在数据库设计上作修改会方便实现点:
    在类别表中增加产品计数字段(如:PouctCount),存放每类产品的数量;
    显示的时候只取PouctCount>0的记录,select * from 产品类别表 where PouctCount>0,绑定数据源就可以了.
      

  3.   

    没有这么简单,因为一个产品可能属于两个类别,所以,产品表中有cid1和cid2来表示两个类别
      

  4.   

    而且不重复显示产品,比如,产品1属于类别a和类别b,如果在类别a中显示了该产品,那么类别b中就不显示这个产品了
      

  5.   

    绑定DataList2的时候判断是否有记录
      

  6.   

    判断的方法当然有:
    比如这样
    for(int i=0;i<this.DataGrid1.Items.Count;i++)
    {
            if(true)
            {
             this.DataGrid1.Items[i].Visible = false;
            }
    }
      

  7.   


    可以判断是否有记录,就是不知道怎么控制datalist1的显示或者隐藏
      

  8.   

    在sql command中过滤就行了。
      

  9.   

    无法在一个sql语句中完成请注意5楼的补充说明
      

  10.   

    建议换一个控件。比如GridViewdatalist难于实现如果你的数据比较简单的话可以:用逐个影藏的办法。代码如下: protected void btwrong_Click(object sender, EventArgs e)
        {
            string str = "";
            //显示错题代码 **********************************
            for (int tID1 = 1; tID1 <= DataList1.Items.Count; tID1++)
            {
                
                if (str != "")
                {
                    if (((Label)DataList1.Items[tID1 - 1].FindControl("lblc")).Text.Trim() == str)//将用户选择结果和进行比较
                    {
    ((Label)DataList1.Items[tID1 - 1].FindControl("lbl1")).Visible = false;。



    ((Label)DataList1.Items[tID1 - 1].FindControl("lbln")).Visible = false;                }
                    else{
    ((Label)DataList1.Items[tID1 - 1].FindControl("lbl1")).Visible = ture;。



    ((Label)DataList1.Items[tID1 - 1].FindControl("lbln")).Visible = true;}
                          
        }