公布部分C#编写库存管理软件代码供所有.Net开发爱好者共同学习。
代码网友可直接引用,如转载请注明出处。
http://spaces.msn.com/zhihongf/
第一部分根据搜索条件搜索数据库,并返回数据填充ListView控件。
代码编写:方志洪
E-mail:zhihongf@Gmail.com
2006年2月3日。
 
   #region 读取数据库获取所有产品并存入DataSet
  /// <summary>
  /// DataSet保存所有产品;
  /// </summary>
  private System.Data.DataSet DsProduct=new System.Data.DataSet("AllProduct");
  /// <summary>
  /// 读取数据库获取所有产品信息并填充DataSet;
  /// </summary>
  private void GetAllProductAddDataSet()
  {
   this.DsProduct.Clear();
   //声明数据库链接
   string strCommandText="SELECT * FROM [产品清单]";
   System.Data.SqlClient.SqlConnection sqlconnection=new System.Data.SqlClient.SqlConnection();
   sqlconnection.ConnectionString=AppConfig.ClassDataLinkString.DataConnection;
   try
   {
    System.Data.SqlClient.SqlDataAdapter sqldataadapter=new System.Data.SqlClient.SqlDataAdapter(strCommandText,sqlconnection);
    sqldataadapter.Fill(this.DsProduct,"tableAllProduct");
   }
   catch(System.Exception ex)
   {
    MessageBox.Show(ex.ToString());
   }
   finally
   {
    sqlconnection.Close();
   }
  }
  #endregion
  #region 根据查询条件返回的DataRow[] 数组填充ListView控件;
  /// <summary>
  /// 根据查询条件返回的DataRow[] 数组填充ListView控件;
  /// </summary>
  /// <param name="drsProductList">填充ListView的DataRow[] 数组</param>
  private void UseDataRowFillListView(System.Data.DataRow[] drsProductList)
  {
   this.listViewProduct.BeginUpdate();
   int m_intBackColor=0;
   foreach(System.Data.DataRow m_dr in drsProductList)
   {
    System.Windows.Forms.ListViewItem m_lvi=new ListViewItem();
    m_lvi.Text=m_dr["产品编号"].ToString();
    m_lvi.SubItems.Add(m_dr["产品名称"].ToString());
    m_lvi.SubItems.Add(m_dr["规格"].ToString());
    m_lvi.SubItems.Add(System.Decimal.Parse(m_dr["目前库存量"].ToString()).ToString("0.##"));
    m_lvi.SubItems.Add(m_dr["包装单位"].ToString());
    m_lvi.SubItems.Add(m_dr["产品存放区域"].ToString());
    m_lvi.SubItems.Add(m_dr["备注"].ToString());
   
    //改变奇数偶数行的背景色
    m_intBackColor+=1;
    if(m_intBackColor%2==0)
    {
     m_lvi.BackColor=Color.FromArgb(245,245,245);
    }
    //判断当前产品是否还有库存
    if(System.Decimal.Parse(m_dr["目前库存量"].ToString()) <= System.Decimal.Parse(m_dr["库存预警"].ToString()))
    {
     m_lvi.ForeColor=Color.Blue;
     if(System.Decimal.Parse(m_dr["目前库存量"].ToString())==0)
     {
      m_lvi.ForeColor=Color.Orange;
     }
     if(System.Decimal.Parse(m_dr["目前库存量"].ToString())<0)
     {
      m_lvi.ForeColor=Color.Red;
     }
    }
    else
    {
     m_lvi.ForeColor=Color.Green;
    }
    this.listViewProduct.Items.Add(m_lvi);
   }
   this.listViewProduct.EndUpdate();
  }
  #endregion
  #region 查询DataSet(DsProduct)根据不同分类号获取数据并填充ListView控件
  /// <summary>
  /// 根据产品分类编号,查询DataSet,并返回数据填充ListView控件.
  /// </summary>
  /// <param name="searchID">产品分类编号</param>
  private void SearchDataSetFillListView(int searchID)
  {
   this.listViewProduct.Items.Clear();
   System.Data.DataRow[] drsProduct= this.DsProduct.Tables["tableAllProduct"].Select("分类编号="+searchID.ToString());
   this.strSearchSQL="分类编号="+searchID.ToString();
   this.strOrderSQL="";
   //调用函数 根据查询条件返回的DataRow[] 数组填充ListView控件;
   this.UseDataRowFillListView(drsProduct);
  }
  #endregion
  #region 智能搜索函数
  /// <summary>
  /// 智能搜索函数,根据搜索条件,在(产品编号,产品名称,名称代码)三段中进行模糊查找。
  /// </summary>
  /// <param name="strSearchCodition">查找条件字符串</param>
  private void AutoSearch(string strSearchCodition)
  {
   this.listViewProduct.Items.Clear();
   //判断是否有有效查找条件字符
   if(strSearchCodition.Length>0)
   {
    string m_searchSQL="[产品编号] LIKE '"+strSearchCodition.ToString()+"%' ";
    m_searchSQL+="OR [产品名称] LIKE '%"+strSearchCodition.ToString()+"%' ";
    m_searchSQL+="OR [名称编码] LIKE '"+strSearchCodition.ToString()+"%'";
    string m_str="产品编号 ASC";
    System.Data.DataRow[] drsProduct= this.DsProduct.Tables["tableAllProduct"].Select(m_searchSQL,m_str);
    this.strSearchSQL=m_searchSQL;
    this.strOrderSQL=m_str;
    //调用函数 根据查询条件返回的DataRow[] 数组填充ListView控件;
    this.UseDataRowFillListView(drsProduct);
   }
  }
  #endregion
 
=======================================================
对以上代码网友如有建议或更好的实现方法可与我联系。
方志洪
E-mail:zhihongf@gmail.com
2006年2月3日。