绑定填充comobox控件

类别:.NET开发 点击:0 评论:0 推荐:

 #region "绑定填充comobox控件"
 
 public class MyComboBoxControl
 {
  #region "自定义字段"
  
  private string tIndexFieldName;
  private string tValueFieldName;
  private System.Collections.ArrayList tSourceArray;
  private  System.Windows.Forms.ComboBox tComboBox;
  private System.Data.DataTable tSourceDataTable;
  private string tError="";
  private string[] tOtherField;

  #endregion

  #region "自定义属性"
  /// <summary>
  ///填充时可能发生的错误信息
  /// </summary>
  public string error
  {
   get
   {
    return tError;
   }
  }

  /// <summary>
  /// Combo控件可以绑定的数据表
  /// </summary>
  public System.Data.DataTable SoureDataTable
  {
   get
   {
    return tSourceDataTable;
   }
   set
   {
    tSourceDataTable=value;
   }
  }

  /// <summary>
  /// 保存数据的数组集合,将做为combo的数据源
  /// </summary>
  public System.Collections.ArrayList  SoureArray
  {
   get
   {
    return tSourceArray;
   }
   set
   {
    tSourceArray=value;
   }
  }

  /// <summary>
  ///数据源表提供的索引字段名称
  /// </summary>
  public string  IndexFieldName
  {
   get
   {
    return tIndexFieldName;
   }
   set
   {
    tIndexFieldName=value;
   }
  }

  /// <summary>
  /// 数据源表提供的内容字段名称
  /// </summary>
  public string  ValueFiledName
  {
   get
   {
    return tValueFieldName;
   }
   set
   {
    tValueFieldName=value;
   }
  }

  /// <summary>
  /// 将绑定的ComboBox控件
  /// </summary>
  public System.Windows.Forms.ComboBox   ComboBox
  {
   get
   {
    return tComboBox;
   }
   set
   {
    tComboBox=value;
   }
  }
  #endregion

  public MyComboBoxControl()
  {
   tSourceArray=new System.Collections.ArrayList();
   tComboBox=new System.Windows.Forms.ComboBox();
  }


  public MyComboBoxControl(System.Data.DataTable pDataTable)
  {
   tSourceDataTable=pDataTable;
   tSourceArray=new System.Collections.ArrayList();
   tComboBox=new System.Windows.Forms.ComboBox();
  }


  public MyComboBoxControl(System.Windows.Forms.ComboBox pComboBox,
   System.Data.DataTable pDataTable,
   string pValueFieldName,
   string pIndexFieldName,
   params string[] pOtherField)
  {
   tSourceDataTable=pDataTable;
   tSourceArray=new System.Collections.ArrayList();
   //pComboBox.Items.Clear(); 
   tComboBox=pComboBox;
   tValueFieldName=pValueFieldName;
   tIndexFieldName=pIndexFieldName;
   tOtherField=pOtherField;

   BindComboBoxByDataTable();
  }
  
  /// <summary>
  /// 将数据源表填入数组集合并绑定到combobox
  /// </summary>
  /// <returns></returns>
  public bool BindComboBoxByDataTable()
  {
   try
   {
    foreach(DataRow tDataRow in tSourceDataTable.Rows)
    {
     string[] m=null;//=new string[tOtherField.Length];

     if (tOtherField!=null)
     {
      if (tOtherField.Length>0)
      {
       m=new string[tOtherField.Length];
       for(int i=0;i<=tOtherField.Length-1;i++)
       {
        m[i]=tDataRow[tOtherField[i]].ToString();
       }
      }
     }

     tSourceArray.Add(new MyComboBoxItem(tDataRow[tValueFieldName].ToString() ,
      Convert.ToInt32(tDataRow[tIndexFieldName]),m));
    }

    if (tSourceDataTable.Rows.Count >0)
    {
     tComboBox.DataSource  = tSourceArray;
     tComboBox.DisplayMember ="Value";
     tComboBox.ValueMember = "Index";
    }
    
    return true;
   }
   catch (System.Exception e)
   {
    tError=e.ToString();
    return false;
   }
  }
 }

 public class MyComboBoxItem
 {

  public MyComboBoxItem()
  {

  }

  /// <summary>
  /// 绑定的数组集合的元素类
  /// </summary>
  /// <param name="pValue">内容、值</param>
  /// <param name="pIndex">索引、键</param>
  public MyComboBoxItem(string pValue, int pIndex,params string[] pOtherValue)
  {
   tIndex = pIndex;
   tValue = pValue;
   tOtherValue=pOtherValue;
  }
  
  #region "自定义属性"

  private string tValue;
  private int tIndex;
  private string[] tOtherValue;

  /// <summary>
  /// 内容属性
  /// </summary>
  public string Value
  {
   get{return tValue;}
  }

  /// <summary>
  /// 索引属性
  /// </summary>
  public int Index
  {
   get{return tIndex;}
  }

  /// <summary>
  /// 辅助提示属性
  /// </summary>
  public string[] OtherValue
  {
   get{return tOtherValue;}
  }

  #endregion
  
 }
 #endregion
 //填充指定数值到ComboBox中
  public void FillDataInfoToCombo(System.Windows.Forms.ComboBox pComboBox,string pName,int pId,params string[] pOther)
  {
   My.MyComboBoxControl t=new TRAFFICERPSYSTEM.My.MyComboBoxControl();
   My.MyComboBoxItem m=new TRAFFICERPSYSTEM.My.MyComboBoxItem(pName,pId,pOther);
 
   t.SoureArray.Add(m);
   pComboBox.DataSource=t.SoureArray;
   pComboBox.DisplayMember ="Value";
   pComboBox.ValueMember = "Index";
   t=null;
  }

  #region "填充隶属站信息到combobox"

  public bool FillSbdStaCbo(System.Windows.Forms.ComboBox pComboBox)
  {
   
   DataSet t=new DataSet ();
//自己连数据库
   Business.SysManage.SysManage s=new Business.SysManage.SysManage();

   if (!s.GetSubordStation(t,"SbdStaInfo"))
   {
    tError=s.err;
    t=null;
    s=null;
    return false;
   }  

   My.MyComboBoxControl m=new TRAFFICERPSYSTEM.My.MyComboBoxControl(pComboBox,t.Tables[0],"SbdStaName","SbdStaId");
   if (m.error!="")
   {
    tError="填充隶属站信息失败!"+m.error;
    t=null;
    m=null;
    return false;
   }

   m=null;s=null;t=null;
   return true;
  }

本文地址:http://com.8s8s.com/it/it43922.htm