DataGridView使用 --转载

  • 设置数字显示格式
    数据库中是Numeric(38,6)类型,显示到DataGridView界面上后面始终有6个0(如:20000.000000),想要仅仅显示整数,一阵好找,但是没有发现详细的文档注释,有的在格式化字符串中加上#符号(如:##.##),不知道是干嘛。可以如此操作。
      DataGridView dgvDiscipline=this[ivcDiscipline] as DataGridView;
      dgvDiscipline.Columns["anticipatingIncome"].DefaultCellStyle.Format="0";

界面即显示整数了。如果还想以千分位进行显示(如:2755555.000000000需要显示为2,755,555.0000)。可以设置DataGridView的DefaultCellStyle属性为“N4”,N代表以千分位显示,N后的数字表示小数点后保留几位。仅作为抛砖引玉。如下代码所示:

      DataGridView dgvDiscipline=this[ivcDiscipline] as DataGridView;
      dgvDiscipline.Columns["anticipatingIncome"].DefaultCellStyle.Format="N4"


  • DataGridView控制单元格只读。“proofComment”为列名,row为行号。 
dgv["proofComment",row].ReadOnly = false;
  • 设置列头字体颜色
      DataGridViewCellStyle style = new DataGridViewCellStyle();
      style.ForeColor = System.Drawing.Color.Red;
      string[] NotNullCol=NotNullColumns.Split(new char[]{','},StringSplitOptions.RemoveEmptyEntries);
      foreach (DataGridViewColumn col in dgv.Columns)
      {
        foreach(string colName in NotNullCol)
        {
          if(colName==col.Name)
          {
            col.HeaderCell.Style = style;
          }
        }
      }
      dgv.EnableHeadersVisualStyles = false;

实际使用例子:

  /// <summary>
        /// 数据表中字段的小数位数截取
        /// </summary>
        /// <param name="dt"></param>
        public virtual void DataMathRound(ref DataTable dt)
        {

            foreach (DataRow drFld in dtFld.Rows)
            {
                string fldCode = ModelLib.Convert.ConvertString(drFld["fldCode"]);
                if (dt.Columns.Contains(fldCode) == false) continue;
                string sDigits = ModelLib.Convert.ConvertString(drFld["numscale"]);
                if (string.IsNullOrEmpty(sDigits)) sDigits = "6";
                int digits = ModelLib.Convert.ConvertInt(sDigits);
                foreach (DataRow drData in dt.Rows)
                {
                    Single dValue = ModelLib.Convert.ConvertSingle(drData[fldCode]);
                    ModelLib.Convert.MathRound(ref dValue, digits);
                    drData[fldCode] = dValue;
                }
            }
        }
        /// <summary>
        /// 获取字段的小数位数
        /// </summary>
        /// <param name="tblCode"></param>
        /// <param name="fldCode"></param>
        /// <returns></returns>
        public int getFieldScale(string tblCode, string fldCode)
        {
            int digits = 6;
    DataTable dtFld = bllFld.GetData("tblCode='" + tblCode + "' and fldCode='" + fldCode +"' and ( fldType='Number')");
            if (dtFld.Rows.Count == 0)
            {
                digits = 0;
            }
            else
            {
                string sDigits = ModelLib.Convert.ConvertString(dtFld.Rows[0]["numscale"]);
                if (string.IsNullOrEmpty(sDigits)) sDigits = "6";
                digits = ModelLib.Convert.ConvertInt(sDigits);
            }           
            return digits;
        }

猜你喜欢

转载自blog.csdn.net/qq274864806/article/details/80907932