zoukankan      html  css  js  c++  java
  • 【蛙蛙推荐】ListControl绑定空值的处理

    问题:我们从数据库取出数据绑定到listbox里,如果DataValueField有多项为空,而你的listbox可以多选,这时候你选了多个ListBox的值,再点击其它按钮处理这些值的时候,尽管你选了多个值,但因为好多value都是零长度字符串,所以无法选中。
    解决:我们可以利用ListControl的DataBinding事件来处理数据源,然后重新绑定,代码如下。
    void bindlist()
    {
     //获取数据源并设置相应的绑定字段
     ListBox1.DataSource = wawa.ContactsManager.GetDetpGroup(1);   
     ListBox1.DataValueField ="mobile";
     ListBox1.DataTextField = "friendname";

     //挂接Binding事件
     ListBox1.DataBinding +=new EventHandler(ListBox1_DataBinding);
     ListBox1.DataBind();
    }

    private void ListBox1_DataBinding(object sender, EventArgs e)
    {
     //获取listbox
     ListControl lc = sender as ListControl;
     if (lc != null)
     {
      //获取数据源
      DataSet ds = lc.DataSource as DataSet;
      if (ds != null)
      {
       DataTable dt = ds.Tables[0];
       //判断数据源里是否有mobile列
       if (dt.Columns.IndexOf("mobile") != -1)
       {
        int i = 0;
        //循环所有行,并重新给mobile列赋值
        //注意这里用一个递增的i作为后缀,是为了防止绑定后的listbox值重复
        foreach(DataRow dr in dt.Rows)
        {
         if (dr.IsNull("mobile") || dr["mobile"].ToString() == "")
         {
          dr["mobile"] = "n/a" + i.ToString();
          i++;
         }
        }
       }
       lc.DataSource = dt;
      }
     }
    }

    然后你处理值的时候可以判断value是否是"n/a"开头的,就可以知道是否是个无效值了。

  • 相关阅读:
    Atcoder Grand Contest 038 F
    洛谷 P5502
    Codeforces 1010F
    洛谷 P4621
    洛谷 P5518
    Oracle-切换当用用户的模式
    Oracle-DBV数据文件校验工具
    【转载】Oracle-通过增量备份前滚的反手解决物理备库归档缺失,损坏,gap问题
    Oracle-对比SAA与STA
    Oracle-SAA
  • 原文地址:https://www.cnblogs.com/onlytiancai/p/483525.html
Copyright © 2011-2022 走看看