【蛙蛙推荐】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"开头的,就可以知道是否是个无效值了。

你可能感兴趣的:(list)