程序如下:
            DataSet dswt = new DataSet();
            dswt = sqlhelper.GetDataSet("select id, labelcn from Wtabel order by id asc");foreach (DataRow dr in dswt.Tables[0].Rows)
            {
                if (dr["labelcn"].ToString() != "" && dr["labelcn"].ToString() != null)
                {
                    dropdownlist1.DataSource = dswt.Tables[0];
                    dropdownlist1.DataTextField = "labelcn"; //dropdownlist的Text的字段
                    dropdownlist1.DataValueField = "id";//dropdownlist的Value的字段
                    dropdownlist1.DataBind();                }
            }
按照上边判断,当表“labelcn”字段中出现空值的时候,应该不执行dropdownlist的添加了,但是在下拉菜单显示时,还是有空值在下拉选项里,请大侠帮帮忙,谢谢了!!!

解决方案 »

  1.   

    if(dr["labelcn"]!=System.DBNull.Value)
    {
       ....
    }
      

  2.   

     if (dr["labelcn"].ToString().Trim() != "" || dr["labelcn"]!= null)
    {
        
    }
    楼主改成这样的判断试试看
      

  3.   

    谢谢上边两位,但问题没有解决,我的那个判断当遇到空值时,也会跳过,执行下次循环,现在我用了.Items.Add(new ListItem())这样写是对了。但是我不明白一开始那个写法为什么不对
      

  4.   

    因为:
    不管你有没有加判断,当调用dropdownlist1.DataBind(); 的时候,它会默认将所有数据绑定到dropdownlist1,跟你判断没有关系
    而你用.Items.Add()的话,这样就对数据源的每一行进行了过滤,只允许符合条件的行通过。
      

  5.   

    楼主的代码有问题...
    只需要满足一次 dr["labelcn"].ToString() != "" && dr["labelcn"].ToString() != null
    条件
    就会执行
    dropdownlist1.DataSource = dswt.Tables[0];
      dropdownlist1.DataTextField = "labelcn"; //dropdownlist的Text的字段
      dropdownlist1.DataValueField = "id";//dropdownlist的Value的字段
      dropdownlist1.DataBind(); 
    数据绑定
    --------
    .Items.Add(new ListItem())这样写是对了。
    所以确实应该这么写
    或者
    先操作dswt.Tables[0] 把 为空数据清除,再作为dropdowlist的数据源,绑定才对
      

  6.   

    判断是没有错,关键是这样判断根本就达不到楼主需要的效果另:为什么不在数据查询的时候,加上条件 where labelcn is not null 呢?
      

  7.   

    你可以在foreach前,给DataSet判断一下,
    if(dswt != null && dswt.Tables.Count != 0  && dswt.Tables[0] != null && dswt.Tables[0].Rows.Count != 0)
    {
           //这里面再foreach,就不用做判断了
    }
      

  8.   

    foreach (DataRow dr in dswt.Tables[0].Rows)
      {
      if (dr["labelcn"].ToString() != "" && dr["labelcn"].ToString() != null)
      {
      dropdownlist1.DataSource = dswt.Tables[0];
      dropdownlist1.DataTextField = "labelcn"; //dropdownlist的Text的字段
      dropdownlist1.DataValueField = "id";//dropdownlist的Value的字段
      dropdownlist1.DataBind(); }
      }
    这样写 你判断了跟没判断有什么区别
    1.
    foreach (DataRow dr in dswt.Tables[0].Rows)
      {
      if (dr["labelcn"].ToString() != "" && dr["labelcn"].ToString() != null)
      {
    dropdownlist1.Items.Add(new ListItem(dr["labelcn"].ToString(),dr["id"].ToString() ));
      }
      }2.
        DataView dv = dswt.Tables[0].DefaultView;
        dv.RowFilter = "labelcn is not null or labelcn<>''";
       dropdownlist1.DataSource =dv; 
       dropdownlist1.DataTextField = "labelcn"; //dropdownlist的Text的字段
       dropdownlist1.DataValueField = "id";//dropdownlist的Value的字段
       dropdownlist1.DataBind(); 
      

  9.   

     DataSet dswt = new DataSet();
      dswt = sqlhelper.GetDataSet("select id, labelcn from Wtabel order by id asc");dropdownlist1.Items.clear();
    foreach (DataRow dr in dswt.Tables[0].Rows)
      {
      if (dr["labelcn"].ToString() != "" && dr["labelcn"].ToString() != null)
      {  
      dropdownlist1.Items.Add(new ListItem(dr["labelcn"].Text,dr["id"].Text));
      }在你代码上直接手改的,可能有错,反正就是添加的方式,满足你条件的,你就在DropDownList上添加一个项,而不是你上面的满足条件就又绑定一次那样。