DataGridView使用 --轉載

清新悅悠然發表於2018-07-04
  • 設定數字顯示格式
    資料庫中是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;
        }

相關文章