zoukankan      html  css  js  c++  java
  • 如何设置DataGrid(Windows)网格控件的列标题和列宽

    以下通过两个比较简单的实例来说明如何设置Windows.Forms.DataGrid的列标题和列宽:

     

    实例1:

     1//设置标题
     2SetDataTableHeader(table2);
     3dgManifestInfor.DataSource = table2;
     4
     5DataGridTableStyle dgtStyle = new DataGridTableStyle();
     6dgtStyle.MappingName = "Table1";   //必须对应关联的DataTable的名称,这里因为table2的TableName是Table1
     7
     8dgManifestInfor.TableStyles.Add(dgtStyle);
     9
    10dgtStyle.GridColumnStyles["容器号"].Width = 100;   //对应关联的Datable的列名
    11dgtStyle.GridColumnStyles["运单前缀"].Width = 70;
    12dgtStyle.GridColumnStyles["运单号"].Width = 100;
    13dgtStyle.GridColumnStyles["件数"].Width = 40;
    14dgtStyle.GridColumnStyles["重量"].Width = 70;
    15dgtStyle.GridColumnStyles["品名"].Width = 100;
    16dgtStyle.GridColumnStyles["代理人"].Width = 50;
    17
    18private void SetDataTableHeader(DataTable table)
    19        {
    20            table.Columns["Container"].ColumnName = "容器号";
    21            table.Columns["Awb_Prefix"].ColumnName = "运单前缀";
    22            table.Columns["Awb_No"].ColumnName = "运单号";
    23            table.Columns["PC"].ColumnName = "件数";
    24            table.Columns["Weight"].ColumnName = "重量";
    25            table.Columns["Goods"].ColumnName = "品名";
    26            table.Columns["AgentCode"].ColumnName = "代理人";
    27            //table.Columns["Remarks"].ColumnName = "备注";
    28
    29        }

    30
    31
    32

    实例2:

     1public void SizeColumnsToContent(DataGrid dataGrid, int nRowsToScan)
     2        {
     3            //   Create   graphics   object   for   measuring   widths.   
     4            Graphics Graphics = dataGrid.CreateGraphics();
     5
     6            //   Define   new   table   style.   
     7            DataGridTableStyle tableStyle = new DataGridTableStyle();
     8
     9            try
    10            {
    11                DataTable dataTable = (DataTable)dataGrid.DataSource;
    12
    13                if (-1 == nRowsToScan)
    14                {
    15                    nRowsToScan = dataTable.Rows.Count;
    16                }

    17                else
    18                {
    19                    //   Can   only   scan   rows   if   they   exist.   
    20                    nRowsToScan = System.Math.Min(nRowsToScan, dataTable.Rows.Count);
    21                }

    22
    23                //   Clear   any   existing   table   styles.   
    24                dataGrid.TableStyles.Clear();
    25
    26                //   Use   mapping   name   that   is   defined   in   the   data   source.   
    27                tableStyle.MappingName = dataTable.TableName;   //the mapping name must be the same as table name of the data source 
    28
    29                //   Now   create   the   column   styles   within   the   table   style.   
    30                DataGridTextBoxColumn columnStyle;
    31                int iWidth;
    32
    33
    34
    35                for (int iCurrCol = 0; iCurrCol < dataTable.Columns.Count; iCurrCol++)
    36                {
    37                    DataColumn dataColumn = dataTable.Columns[iCurrCol];
    38                    columnStyle = new DataGridTextBoxColumn();
    39
    40                    columnStyle.TextBox.Enabled = true;
    41                    columnStyle.HeaderText = dataColumn.ColumnName;
    42                    columnStyle.MappingName = dataColumn.ColumnName;
    43
    44                    //   Set   width   to   header   text   width.   
    45                    iWidth = (int)(Graphics.MeasureString(columnStyle.HeaderText, dataGrid.Font).Width);
    46
    47                    //   Change   width,   if   data   width   is   wider   than   header   text   width.   
    48                    //   Check   the   width   of   the   data   in   the   first   X   rows.   
    49                    DataRow dataRow;
    50                    for (int iRow = 0; iRow < nRowsToScan; iRow++)
    51                    {
    52                        dataRow = dataTable.Rows[iRow];
    53
    54                        if (null != dataRow[dataColumn.ColumnName])
    55                        {
    56                            int iColWidth = (int)(Graphics.MeasureString(dataRow.ItemArray[iCurrCol].ToString(), dataGrid.Font).Width);
    57                            int iColHight = (int)(Graphics.MeasureString(dataRow.ItemArray[iCurrCol].ToString(), dataGrid.Font).Height);
    58                            iWidth = (int)System.Math.Max(iWidth, iColWidth);
    59                        }

    60                    }

    61                    columnStyle.Width = iWidth + 4;
    62
    63                    tableStyle.GridColumnStyles.Add(columnStyle);
    64                }

    65                //   Add   the   new   table   style   to   the   data   grid.   
    66                dataGrid.TableStyles.Add(tableStyle);
    67            }

    68            catch (Exception e)
    69            {
    70                MessageBox.Show(e.Message);
    71            }

    72            finally
    73            {
    74                Graphics.Dispose();
    75            }

    76        }
     

        
      其中dataGrid   就是你的dataGrid,     nRowsToScan   你传入-1就可以了  

  • 相关阅读:
    phaser3入门教程-从零开始开发一个打砖块游戏
    Python操作PDF-文本和图片提取(使用PyPDF2和PyMuPDF)
    从零开始手把手教你使用javascript+canvas开发一个塔防游戏01地图创建
    Python实现超级玛丽游戏系列教程02玛丽走跑
    Python实现超级玛丽游戏系列教程01玛丽登场
    通过游戏学javascript系列第一节Canvas游戏开发基础
    mvc模式jsp+servel+dbutils oracle基本增删改查demo
    mvc模式jsp+servel+jdbc oracle基本增删改查demo
    N个任务掌握java系列之统计一篇文章中单词出现的次数
    mysq数据库管理工具navicat基本使用方法
  • 原文地址:https://www.cnblogs.com/greatandforever/p/1450053.html
Copyright © 2011-2022 走看看