改变datagrid的样式

来源:互联网 发布:js 将字母转化成数字 编辑:程序博客网 时间:2024/06/08 19:45

/// <summary>
  /// 设置Datagrid的列样式
  /// </summary>
  /// <param name="dt">System.Data.DataTable</param>
  /// <param name="grid">DataGrid</param>
  static public  void SetGridColumn(System.Data.DataTable dt,DataGrid grid)
  {
   
   ArrayList ArrLst = new ArrayList();
   
   foreach(DataColumn dc in dt.Columns)
   {
    
    if(dc.ColumnName.IndexOf("ID")< 0 )
    {
     ArrLst.Add(dc.ColumnName);
    }
   }

  
   DataGridTableStyle ts1 = new DataGridTableStyle();
   ts1 = WinUI.CreateGridColumnStyles(dt,ArrLst,PubObj.DefaultQuantityScale
    ,PubObj.DefaultPriceScale,PubObj.DefaultMoneyScale,PubObj.DefaultOtherScale);
  
   ((DataGrid)grid).TableStyles.Clear();
   ts1.GridLineColor = System.Drawing.Color.Black;
   //ts1.BackColor = Color.SeaGreen;
   //ts1.AlternatingBackColor =Color.CadetBlue;// Color.Beige;//Color.Bisque;
   ts1.ForeColor = Color.Black;
   ts1.SelectionBackColor = Color.BlueViolet;
   ts1.SelectionForeColor = Color.White;
   //ts1.RowHeadersVisible=false;
   ts1.AllowSorting=true;
   ts1.RowHeaderWidth = 15;
   ((DataGrid)grid).TableStyles.Add(ts1);
   for(int i = 0; i < ((DataGrid)grid).TableStyles[0].GridColumnStyles.Count; i++)
   {
    ((DataGrid)grid).TableStyles[0].GridColumnStyles[i].NullText = "";
   }
   grid.CaptionText = StrConv(grid.CaptionText);
  
  }

static public  DataGridTableStyle CreateGridColumnStyles(System.Data.DataTable dt,
   ArrayList DisplayFieldName,
   int QuatiScale, int PriceScale,
   int MoneyScale, int OtherScale
   )
  {
   DataGridTableStyle dts1 = new DataGridTableStyle();
   dts1.MappingName = dt.TableName;
   
   
   object ty = new object();
   
   for (int i = 0; i < DisplayFieldName.Count; i++)
   {
    ty = dt.Columns[DisplayFieldName[i].ToString()].DataType;
    
    if(ty.ToString() == "System.Boolean")  //如果是 Boolean类型字段
    {
     DataGridBoolColumn dataTbColumn = new DataGridBoolColumn();
     dataTbColumn.NullValue = false;
     //如果该字段的 Caption 为空
     if(dt.Columns[DisplayFieldName[i].ToString()].Caption == "") 
     {
      dataTbColumn.HeaderText = StrConv(DisplayFieldName[i].ToString());
     }
     else //如果该字段的 Caption 不为空
     {
      dataTbColumn.HeaderText = StrConv(dt.Columns[DisplayFieldName[i].ToString()].Caption);
     }
     dataTbColumn.MappingName = DisplayFieldName[i].ToString();
     dts1.GridColumnStyles.Add(dataTbColumn);


    }
    else   //如果是非 Boolean类型字段
    {
     //DataGridTextBoxColumn dataTbColumn = new DataGridTextBoxColumn();
     DataGridColorTextBoxColumn dataTbColumn = new DataGridColorTextBoxColumn(dt.DefaultView);
     if(dt.Columns[DisplayFieldName[i].ToString()].Caption == "")
     {
      dataTbColumn.HeaderText = StrConv(DisplayFieldName[i].ToString());
     }
     else
     {
      dataTbColumn.HeaderText = StrConv(dt.Columns[DisplayFieldName[i].ToString()].Caption);
     }
     dataTbColumn.MappingName = DisplayFieldName[i].ToString ();

     if((DisplayFieldName[i].ToString().IndexOf("规格") >= 0 ))
     {
      dataTbColumn.Alignment = HorizontalAlignment.Center;
     }

     if ((ty.ToString() == "System.Decimal") || (ty.ToString() == "System.Double"))
     {
      dataTbColumn.Alignment =HorizontalAlignment.Right;

      if(DisplayFieldName[i].ToString().IndexOf("数量") >= 0)
      {
       dataTbColumn.Format = IntToFormatStr(QuatiScale);
      }
      else
       if((DisplayFieldName[i].ToString().IndexOf("金额") >= 0 )
        )
      {
       
       dataTbColumn.Format = IntToFormatStr(PriceScale);
       
      }
      if((DisplayFieldName[i].ToString().IndexOf("单价") >= 0 )
       ||(DisplayFieldName[i].ToString().IndexOf("折扣") >= 0))
      {
       dataTbColumn.Format = IntToFormatStr(3);
      }
      
     }
     
     switch(DisplayFieldName[i].ToString())
     {
      case "单位":
       dataTbColumn.Width=32;
       break;
      
      case "币种":
      case "汇率":      
      case "折扣":
       dataTbColumn.Width=48;
       break;
      case "数量":
      case "单价":
      case "金额":
      case "本位币金额":
      case "本位币单价":
       dataTbColumn.Width=80;
       break;
      case "货品名称":
      case "项目名称":
      case "客户名称":
       case "客户":
       dataTbColumn.Width=192;
       break;
      case "实收单价":
      case "实收金额":
      case "实收折扣":
      case "折后金额":
       dataTbColumn.Width=80;
       break;
     }
     
     dts1.GridColumnStyles.Add(dataTbColumn);

    }
   }
   return(dts1);

  }

原创粉丝点击