DataGridView的一些技巧

1、自定義列

   Customize Cells and Columns in the Windows Forms DataGridView Control by Extending Their
    Behavior and Appearance
    Host Controls in Windows Forms DataGridView Cells
    繼承 DataGridViewTextBoxCell 類生成新的Cell類,然後再繼承 DataGridViewColumn 生成新的Column類,並指定
    CellTemplate爲新的Cell類。新生成的Column便可以增加到DataGridView中去。
2、自動適應列寬
    Programmatically Resize Cells to Fit Content in the Windows Forms DataGridView Control
    Samples:
    DataGridView.AutoSizeColumns(
           DataGridViewAutoSizeColumnCriteria.HeaderAndDisplayedRows);
    DataGridView.AutoSizeColumn(
                DataGridViewAutoSizeColumnCriteria.HeaderOnly,
                2, false);
    DataGridView.AutoSizeRow(
                DataGridViewAutoSizeRowCriteria.Columns,
                2, false);
    DataGridView.AutoSizeRows(
              DataGridViewAutoSizeRowCriteria.HeaderAndColumns,
                0, dataGridView1.Rows.Count, false);
3、可以綁定並顯示對象
    Bind Objects to Windows Forms DataGridView Controls
4、可以改變表格線條風格
    Change the Border and Gridline Styles in the Windows Forms DataGridView Control
    Samples:
    this.dataGridView1.GridColor = Color.BlueViolet;
    this.dataGridView1.BorderStyle = BorderStyle.Fixed3D;
    this.dataGridView1.CellBorderStyle = DataGridViewCellBorderStyle.None;
    this.dataGridView1.RowHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single;
    this.dataGridView1.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single;
5、動態改變列是否顯示,和動態改變列的顯示順序
    Change the Order of the Columns in the Windows Forms DataGridView Control
    Samples:
    customersDataGridView.Columns["CustomerID"].Visible = false;
    customersDataGridView.Columns["ContactName"].DisplayIndex = 0;
    customersDataGridView.Columns["ContactTitle"].DisplayIndex = 1;
    customersDataGridView.Columns["City"].DisplayIndex = 2;
    customersDataGridView.Columns["Country"].DisplayIndex = 3;
    customersDataGridView.Columns["CompanyName"].DisplayIndex = 4;
6、可以在列中顯示圖像
    Display Images in Cells of the Windows Forms DataGridView Control
    Samples:
            Icon treeIcon = new Icon(this.GetType(), "tree.ico");
           DataGridViewImageColumn iconColumn = new DataGridViewImageColumn ();
           iconColumn.Image = treeIcon.ToBitmap();
           iconColumn.Name = "Tree";
           iconColumn.HeaderText = "Nice tree";
           dataGridView1.Columns.Insert(2, iconColumn);
7、格式化顯示內容:
    Format Data in the Windows Forms DataGridView Control
    Samples:
    this.dataGridView1.Columns["UnitPrice"].DefaultCellStyle.Format = "c";
    this.dataGridView1.Columns["ShipDate"].DefaultCellStyle.Format = "d";
    this.dataGridView1.DefaultCellStyle.NullValue = "no entry";
    this.dataGridView1.DefaultCellStyle.WrapMode = DataGridViewWrapMode.Wrap;
    this.dataGridView1.Columns["CustomerName"].DefaultCellStyle.Alignment =
                         DataGridViewContentAlignment.MiddleRight;
   
8、在拖動列的滾動條時可以將指定的列凍結
    Freeze Columns in the Windows Forms DataGridView Control
    Samples:將指定列及以前的列固定不動
    this.dataGridView1.Columns["AddToCartButton"].Frozen = true;
9、獲取選擇的單元格,行,列
    Get the Selected Cells, Rows, and Columns in the Windows Forms DataGridView Control
    Samples:
       見msdn。
10、顯示錄入時出現的錯誤信息
    Handle Errors that Occur During Data Entry in the Windows Forms DataGridView Control
    Samples:
    private void dataGridView1_DataError(object sender,
        DataGridViewDataErrorEventArgs e)
        {
        // If the data source raises an exception when a cell value is
        // commited, display an error message.
        if (e.Exception != null &&
            e.Context == DataGridViewDataErrorContext.Commit)
        {
            MessageBox.Show("CustomerID value must be unique.");
        }
        }
11、大數據量顯示採用Virtual Mode
    Implement Virtual Mode in the Windows Forms DataGridView Control
12、設置指定的列只讀
    Make Columns in the Windows Forms DataGridView Control Read-Only
    Samples:
    dataGridView1.Columns["CompanyName"].ReadOnly = true;
 
13、移去自動生成的列
    Remove Autogenerated Columns from a Windows Forms DataGridView Control
    Sample:
    dataGridView1.AutoGenerateColumns = true;
    dataGridView1.DataSource = customerDataSet;
    dataGridView1.Columns.Remove ("Fax");
    或:
    dataGridView1.Columns["CustomerID"].Visible = false;
14、自定義選擇模式
    Set the Selection Mode of the Windows Forms DataGridView Control
    Sample:
    this.dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
    this.dataGridView1.MultiSelect = false;
15、自定義設定光標進入單元格是否編輯模式(編輯模式)
    Specify the Edit Mode for the Windows Forms DataGridView Control
    this.dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;
16、新行指定默認值
    Specify Default Values for New Rows in the Windows Forms DataGridView Control
    Sample:
    private void dataGridView1_DefaultValuesNeeded(object sender,                       System.Windows.Forms.DataGridViewRowEventArgs e)
    {
      e.Row.Cells["Region"].Value = "WA";
       e.Row.Cells["City"].Value = "Redmond";
       e.Row.Cells["PostalCode"].Value = "98052-6399";
      e.Row.Cells["Region"].Value = "NA";
      e.Row.Cells["Country"].Value = "USA";
    e.Row.Cells["CustomerID"].Value = NewCustomerId();
    }
17、數據驗證
    Validate Data in the Windows Forms DataGridView Control
    Samples:
     private void dataGridView1_CellValidating(object sender,
            DataGridViewCellValidatingEventArgs e)
        {
        // Validate the CompanyName entry by disallowing empty strings.
        if (dataGridView1.Columns[e.ColumnIndex].Name == "CompanyName")
        {
            if (e.FormattedValue.ToString() == String.Empty)
            {
                dataGridView1.Rows[e.RowIndex].ErrorText =
                    "Company Name must not be empty";
                e.Cancel = true;
            }
        }
        }
18、數據提交到dataset中
                DataSet ds = new DataSet("MyDataSet");
                ds.Tables[biaom.Trim()].Rows.Clear();
                try
                {
                    for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
                    {
                        DataTable dt = ds.Tables[biaom.Trim()];
                        DataRow myrow = ds.Tables[biaom.Trim()].NewRow();
                        for (int j = 0; j < dataGridView1.Columns.Count; j++)
                        {
                            myrow[j] = Convert.ToString(dataGridView1.Rows[i].Cells[j].Value);
                        }
                        ds.Tables[biaom.Trim()].Rows.Add(myrow);
                    }
                }
                catch (Exception)
                {
                   
                    MessageBox.Show("輸入類型錯誤!");
                    return;
                }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章