- 设置数字显示格式
数据库中是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;
}