(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

DataGridViewComboBoxColumn-Klasse

Stellt eine Spalte von DataGridViewComboBoxCell-Objekten dar.

Namespace:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)

[ToolboxBitmapAttribute(typeof(DataGridViewComboBoxColumn), "DataGridViewComboBoxColumn.bmp")]
public class DataGridViewComboBoxColumn : DataGridViewColumn

Der DataGridViewComboBoxColumn-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Öffentliche MethodeDataGridViewComboBoxColumnInitialisiert eine neue Instanz der DataGridViewTextBoxColumn-Klasse im Standardzustand.
Zum Seitenanfang

  NameBeschreibung
Öffentliche EigenschaftAutoCompleteRuft einen Wert an, der angibt, ob Zellen in der Spalte die in die jeweilige Zelle eingegebenen Werte mit den möglichen Auswahlmöglichkeiten vergleichen, oder legt diesen fest.
Öffentliche EigenschaftAutoSizeModeRuft den Modus ab, in dem die Spalte automatisch ihre Breite anpasst, oder legt diesen Modus fest. (Von DataGridViewColumn geerbt.)
Öffentliche EigenschaftCellTemplateRuft die Vorlage ab, mit deren Hilfe Zellen erstellt werden, oder legt diese fest. (Überschreibt DataGridViewColumn.CellTemplate.)
Öffentliche EigenschaftCellTypeRuft den Laufzeittyp der Zellvorlage ab. (Von DataGridViewColumn geerbt.)
Öffentliche EigenschaftContextMenuStripRuft das Kontextmenü für die Spalte ab oder legt dieses fest. (Von DataGridViewColumn geerbt.)
Öffentliche EigenschaftDataGridViewRuft das diesem Element zugeordnete DataGridView-Steuerelement ab. (Von DataGridViewElement geerbt.)
Öffentliche EigenschaftDataPropertyNameRuft den Namen der Datenquelleneigenschaft oder Datenbankspalte ab, an die DataGridViewColumn gebunden ist, oder legt diesen Namen fest. (Von DataGridViewColumn geerbt.)
Öffentliche EigenschaftDataSourceRuft die Datenquelle ab, die die Auswahlmöglichkeiten für die Kombinationsfelder füllt, oder legt diese fest.
Öffentliche EigenschaftDefaultCellStyleRuft das Standardzellenformat der Spalte ab oder legt dieses fest. (Von DataGridViewColumn geerbt.)
Öffentliche EigenschaftDefaultHeaderCellTypeRuft den Laufzeittyp der Standardheaderzelle ab oder legt diesen fest. (Von DataGridViewBand geerbt.)
Öffentliche EigenschaftDisplayedRuft einen Wert ab, der angibt, ob das Band gegenwärtig auf dem Bildschirm angezeigt wird. (Von DataGridViewBand geerbt.)
Öffentliche EigenschaftDisplayIndexRuft die Anzeigereihenfolge der Spalte relativ zu den derzeit angezeigten Spalten ab oder legt sie fest. (Von DataGridViewColumn geerbt.)
Öffentliche EigenschaftDisplayMemberRuft eine Zeichenfolge ab, die die Eigenschaft oder Spalte angibt, aus der die in den Kombinationsfeldern anzuzeigenden Zeichenfolgen abgerufen werden, oder legt diese fest.
Öffentliche EigenschaftDisplayStyleRuft einen Wert ab, der bestimmt, wie das Kombinationsfeld angezeigt wird, wenn es nicht bearbeitet wird, oder legt diesen fest.
Öffentliche EigenschaftDisplayStyleForCurrentCellOnlyRuft einen Wert ab, der angibt, ob der DisplayStyle-Eigenschaftswert nur für die aktuelle Zelle im DataGridView-Steuerelement gilt, wenn die aktuelle Zelle sich in dieser Spalte befindet, oder legt diesen fest.
Öffentliche EigenschaftDividerWidthRuft die Breite des Spaltenunterteilers in Pixel ab oder legt sie fest. (Von DataGridViewColumn geerbt.)
Öffentliche EigenschaftDropDownWidthRuft die Breite der Dropdownlisten der Kombinationsfelder ab oder legt diese fest.
Öffentliche EigenschaftFillWeightRuft einen Wert ab, der die Breite der Spalte im Füllmodus relativ zur Breite anderer im Steuerelement vorhandener Spalten im Füllmodus darstellt, oder legt diesen Wert fest. (Von DataGridViewColumn geerbt.)
Öffentliche EigenschaftFlatStyleRuft die unformatierte Darstellung der Zellen der Spalte ab oder legt diese fest.
Öffentliche EigenschaftFrozenRuft einen Wert ab, der angibt, ob eine Spalte verschoben wird, wenn ein Benutzer einen horizontalen Bildlauf durch das DataGridView-Steuerelement durchführt, oder legt diesen Wert fest. (Von DataGridViewColumn geerbt.)
Öffentliche EigenschaftHasDefaultCellStyleRuft einen Wert ab, der angibt, ob die DefaultCellStyle-Eigenschaft festgelegt wurde. (Von DataGridViewBand geerbt.)
Öffentliche EigenschaftHeaderCellRuft die DataGridViewColumnHeaderCell ab, die den Spaltenheader darstellt, oder legt sie fest. (Von DataGridViewColumn geerbt.)
Geschützte EigenschaftHeaderCellCoreRuft die Headerzelle von DataGridViewBand ab oder legt diese fest. (Von DataGridViewBand geerbt.)
Öffentliche EigenschaftHeaderTextRuft den Beschriftungstext für die Headerzelle der Spalte ab oder legt ihn fest. (Von DataGridViewColumn geerbt.)
Öffentliche EigenschaftIndexRuft die relative Position des Bands im DataGridView-Steuerelement ab. (Von DataGridViewBand geerbt.)
Öffentliche EigenschaftInheritedAutoSizeModeRuft den für die Spalte gültigen Modus zum Festlegen der Größe ab. (Von DataGridViewColumn geerbt.)
Öffentliche EigenschaftInheritedStyleRuft den Zellstil ab, der gegenwärtig auf die Spalte angewendet wird. (Von DataGridViewColumn geerbt.)
Öffentliche EigenschaftIsDataBoundRuft einen Wert ab, der angibt, ob die Spalte an eine Datenquelle gebunden ist. (Von DataGridViewColumn geerbt.)
Geschützte EigenschaftIsRowRuft einen Wert ab, der angibt, ob das Band eine Zeile darstellt. (Von DataGridViewBand geerbt.)
Öffentliche EigenschaftItemsRuft die Auflistung der Objekte ab, die als Auswahlmöglichkeiten in den Kombinationsfeldern verwendet werden.
Öffentliche EigenschaftMaxDropDownItemsRuft die maximale Anzahl von Elementen in der Dropdownliste der Zellen in der Spalte ab oder legt diese fest.
Öffentliche EigenschaftMinimumWidthRuft die minimale Breite der Spalte in Pixel ab oder legt sie fest. (Von DataGridViewColumn geerbt.)
Öffentliche EigenschaftNameRuft den Namen der Spalte ab oder legt ihn fest. (Von DataGridViewColumn geerbt.)
Öffentliche EigenschaftReadOnlyRuft einen Wert ab, der angibt, ob der Benutzer die Zellen der Spalte bearbeiten kann, oder legt diesen Wert fest. (Von DataGridViewColumn geerbt.)
Öffentliche EigenschaftResizableRuft einen Wert ab, der angibt, ob die Größe der Spalte geändert werden kann, oder legt diesen fest. (Von DataGridViewColumn geerbt.)
Öffentliche EigenschaftSelectedRuft einen Wert ab, der angibt, ob sich das Band in einem ausgewählten Benutzeroberflächenzustand befindet, oder legt diesen Wert fest. (Von DataGridViewBand geerbt.)
Öffentliche EigenschaftSiteInfrastruktur. Ruft die Site der Spalte ab oder legt sie fest. (Von DataGridViewColumn geerbt.)
Öffentliche EigenschaftSortedRuft einen Wert ab, der angibt, ob die Elemente im Kombinationsfeld sortiert sind, oder legt diesen fest.
Öffentliche EigenschaftSortModeRuft den Sortiermodus für die Spalte ab oder legt diesen fest. (Von DataGridViewColumn geerbt.)
Öffentliche EigenschaftStateRuft den Benutzeroberflächenzustand des Elements ab. (Von DataGridViewElement geerbt.)
Öffentliche EigenschaftTagRuft das Objekt ab, das dem Band zuzuordnende Daten enthält, oder legt dieses fest. (Von DataGridViewBand geerbt.)
Öffentliche EigenschaftToolTipTextRuft den für QuickInfos verwendeten Text ab oder legt diesen fest. (Von DataGridViewColumn geerbt.)
Öffentliche EigenschaftValueMemberRuft eine Zeichenfolge ab, die die Eigenschaft oder Spalte angibt, aus der die Werte abgerufen werden, die den Auswahlmöglichkeiten im Kombinationsfeld entsprechen, oder legt diese fest.
Öffentliche EigenschaftValueTypeRuft den Datentyp der Werte in den Zellen der Spalte ab oder legt ihn fest. (Von DataGridViewColumn geerbt.)
Öffentliche EigenschaftVisibleRuft einen Wert ab, der angibt, ob die Spalte sichtbar ist, oder legt diesen Wert fest. (Von DataGridViewColumn geerbt.)
Öffentliche EigenschaftWidthRuft die aktuelle Breite der Spalte ab oder legt sie fest. (Von DataGridViewColumn geerbt.)
Zum Seitenanfang

  NameBeschreibung
Öffentliche MethodeCloneErstellt eine genaue Kopie dieser Spalte. (Überschreibt DataGridViewColumn.Clone().)
Öffentliche MethodeDispose()Gibt alle vom DataGridViewBand verwendeten Ressourcen frei. (Von DataGridViewBand geerbt.)
Geschützte MethodeDispose(Boolean)Gibt die von DataGridViewBand verwendeten nicht verwalteten Ressourcen und optional die verwalteten Ressourcen frei. (Von DataGridViewColumn geerbt.)
Öffentliche MethodeEquals(Object)Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist. (Von Object geerbt.)
Geschützte MethodeFinalizeGibt die dem Band zugeordneten Ressourcen frei. (Von DataGridViewBand geerbt.)
Öffentliche MethodeGetHashCodeFungiert als die Standardhashfunktion. (Von Object geerbt.)
Öffentliche MethodeGetPreferredWidthBerechnet die ideale Breite der Spalte auf der Grundlage der angegebenen Kriterien. (Von DataGridViewColumn geerbt.)
Öffentliche MethodeGetTypeRuft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Geschützte MethodeMemberwiseCloneErstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Geschützte MethodeOnDataGridViewChangedWird aufgerufen, wenn das Band einer anderen DataGridView zugeordnet wird. (Von DataGridViewBand geerbt.)
Geschützte MethodeRaiseCellClickLöst das DataGridView.CellClick-Ereignis aus. (Von DataGridViewElement geerbt.)
Geschützte MethodeRaiseCellContentClickLöst das DataGridView.CellContentClick-Ereignis aus. (Von DataGridViewElement geerbt.)
Geschützte MethodeRaiseCellContentDoubleClickLöst das DataGridView.CellContentDoubleClick-Ereignis aus. (Von DataGridViewElement geerbt.)
Geschützte MethodeRaiseCellValueChangedLöst das DataGridView.CellValueChanged-Ereignis aus. (Von DataGridViewElement geerbt.)
Geschützte MethodeRaiseDataErrorLöst das DataGridView.DataError-Ereignis aus. (Von DataGridViewElement geerbt.)
Geschützte MethodeRaiseMouseWheelLöst das Control.MouseWheel-Ereignis aus. (Von DataGridViewElement geerbt.)
Öffentliche MethodeToStringRuft eine Zeichenfolge ab, die die Spalte beschreibt. (Überschreibt DataGridViewColumn.ToString().)
Zum Seitenanfang

  NameBeschreibung
Öffentliches EreignisDisposedTritt ein, wenn die DataGridViewColumn freigegeben ist. (Von DataGridViewColumn geerbt.)
Zum Seitenanfang

Die DataGridViewComboBoxColumn-Klasse ist ein spezieller Typ von DataGridViewColumn zum logischen Hosten von Zellen, mit denen Werte aus einer Liste ausgewählt werden können. Eine DataGridViewComboBoxColumn verfügt in jeder DataGridViewRow, die diese überschneidet, über eine zugeordnete DataGridViewComboBoxCell.

Sie können die Zellen manuell auffüllen, indem Sie ihre Value-Eigenschaften festlegen. Sie können auch die Spalte an die Datenquelle binden, die von der DataGridView.DataSource-Eigenschaft angegeben wird. Wenn die DataGridView an eine Datenbanktabelle gebunden ist, legen Sie die DataPropertyName-Eigenschaft der Spalte auf den Namen einer Tabellenspalte fest. Wenn die DataGridView an eine Auflistung von Objekten gebunden ist, legen Sie die DataPropertyName-Eigenschaft auf den Namen einer Objekteigenschaft fest.

Sie können die Dropdownliste der Spalte manuell auffüllen, indem Sie der Items-Auflistung Werte hinzufügen. Sie können aber auch die Dropdownliste an ihre eigene Datenquelle binden, indem Sie die DataSource-Eigenschaft der Spalte festlegen. Wenn es sich bei den Werten um Objekte einer Auflistung oder Datensätze in einer Datenbanktabelle handelt, müssen Sie außerdem die DisplayMember-Eigenschaft und die ValueMember-Eigenschaft festlegen. Die DisplayMember-Eigenschaft gibt an, welche Objekteigenschaft oder Datenbankspalte die Werte enthält, die in der Dropdownliste angezeigt werden. Die ValueMember-Eigenschaft gibt an, mit welcher Objekteigenschaft oder Datenbankspalte die Value-Eigenschaft der Zelle festgelegt wird.

In einem typischen Szenario wird das DataGridView-Steuerelement an eine übergeordnete Datenbanktabelle und die Dropdownliste an eine verknüpfte untergeordnete Tabelle gebunden. Beispielsweise können Sie das DataGridView-Steuerelement an eine Orders-Tabelle mit einer ProductID-Spalte binden und die DataSource-Eigenschaft der Spalte auf eine Products-Tabelle mit einer ProductID-Spalte und einer ProductName-Spalte festlegen. In diesem Fall legen Sie die DataPropertyName-Eigenschaft der Spalte auf "ProductID" fest, um die Zellwerte anhand der Orders.ProductID-Spalte aufzufüllen. Wenn Sie jedoch in den Zellen und in der Dropdownliste die tatsächlichen Produktnamen anzeigen möchten, müssen Sie der Products-Tabelle die entsprechenden Werte zuordnen, indem Sie die ValueMember-Eigenschaft auf "ProductID" und die DisplayMember-Eigenschaft auf "ProductName" festlegen.

Die Werte der Dropdownliste (oder die durch die ValueMember-Eigenschaft angegebenen Werte) müssen die tatsächlichen Zellwerte enthalten, da das DataGridView-Steuerelement andernfalls eine Ausnahme auslöst.

Durch das Festlegen der Eigenschaften DataSource, DisplayMember und ValueMember der Spalte werden die entsprechenden Eigenschaften für alle Zellen der Spalte und auch für CellTemplate automatisch festgelegt. Wenn Sie diese Eigenschaftswerte für bestimmte Zellen überschreiben möchten, müssen Sie zuerst die Spalteneigenschaft und dann die Zelleigenschaften festlegen.

Im Gegensatz zum ComboBox-Steuerelement verfügt die DataGridViewComboBoxCell nicht über die SelectedIndex-Eigenschaft und die SelectedValue-Eigenschaft. Stattdessen wird durch das Auswählen eines Werts in einer Dropdownliste die Value-Eigenschaft der Zelle festgelegt.

Der Standardsortiermodus für diesen Spaltentyp ist NotSortable.

Hinweise zur Vererbung

Wenn Sie aus DataGridViewComboBoxColumn ableiten und der abgeleiteten Klasse neue Eigenschaften hinzufügen, müssen Sie die Clone-Methode überschreiben, damit die neuen Eigenschaften während der Klonvorgänge kopiert werden. Sie sollten auch die Clone-Methode der Basisklasse aufrufen, sodass die Eigenschaften der Basisklasse in die neue Zelle kopiert werden.

Im folgenden Codebeispiel wird veranschaulicht, wie eine DataGridViewComboBoxColumn verwendet wird, die die Dateneingabe in die Spalte TitleOfCourtesy vereinfacht.


using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
using System.Collections.Generic;
using System.Drawing;

public class Employees : Form
{
    private DataGridView DataGridView1 = new DataGridView();
    private DataGridView DataGridView2 = new DataGridView();

    [STAThread]
    public static void Main()
    {
        try
        {
            Application.EnableVisualStyles();
            Application.Run(new Employees());
        }
        catch (Exception e)
        {
            MessageBox.Show(e.Message + e.StackTrace);
        }
    }

    public Employees()
    {
        this.Load += new EventHandler(Form1_Load);
    }

    private void Form1_Load(System.Object sender, System.EventArgs e)
    {
        try
        {
            SetUpForm();
            SetUpDataGridView1();
            SetUpDataGridView2();
        }
        catch (SqlException)
        {
            MessageBox.Show("The connection string <"
                + connectionString
                + "> failed to connect.  Modify it "
                + "to connect to a Northwind database accessible to "
                + "your system.",
                "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            Application.Exit();
        }
    }

    private void SetUpForm()
    {
        Size = new Size(800, 600);
        FlowLayoutPanel flowLayout = new FlowLayoutPanel();
        flowLayout.FlowDirection = FlowDirection.TopDown;
        flowLayout.Dock = DockStyle.Fill;
        Controls.Add(flowLayout);
        Text = "DataGridView columns demo";

        flowLayout.Controls.Add(DataGridView1);
        flowLayout.Controls.Add(DataGridView2);
    }

    private void SetUpDataGridView2()
    {
        DataGridView2.Dock = DockStyle.Bottom;
        DataGridView2.TopLeftHeaderCell.Value = "Sales Details";
        DataGridView2.RowHeadersWidthSizeMode = 
            DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;
    }

    private void SetUpDataGridView1()
    {
        DataGridView1.DataError += new 
            DataGridViewDataErrorEventHandler(DataGridView1_DataError);
        DataGridView1.CellContentClick += new 
            DataGridViewCellEventHandler(DataGridView1_CellContentClick);
        DataGridView1.CellValuePushed += new 
            DataGridViewCellValueEventHandler(DataGridView1_CellValuePushed);
        DataGridView1.CellValueNeeded += new 
            DataGridViewCellValueEventHandler(DataGridView1_CellValueNeeded);

        // Virtual mode is turned on so that the
        // unbound DataGridViewCheckBoxColumn will
        // keep its state when the bound columns are
        // sorted.       
        DataGridView1.VirtualMode = true;
        DataGridView1.AutoSize = true;
        DataGridView1.DataSource = Populate("SELECT * FROM Employees");
        DataGridView1.TopLeftHeaderCell.Value = "Employees";
        DataGridView1.RowHeadersWidthSizeMode = 
            DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;
        DataGridView1.ColumnHeadersHeightSizeMode = 
            DataGridViewColumnHeadersHeightSizeMode.AutoSize;
        DataGridView1.AutoSizeColumnsMode = 
            DataGridViewAutoSizeColumnsMode.AllCells;
        DataGridView1.AllowUserToAddRows = false;
        DataGridView1.AllowUserToDeleteRows = false;

        // The below autogenerated column is removed so 
        // a DataGridViewComboboxColumn could be used instead.
        DataGridView1.Columns.Remove(ColumnName.TitleOfCourtesy.ToString());
        DataGridView1.Columns.Remove(ColumnName.ReportsTo.ToString());

        AddLinkColumn();
        AddComboBoxColumns();
        AddButtonColumn();
        AddOutOfOfficeColumn();
    }

    private void AddComboBoxColumns()
    {
        DataGridViewComboBoxColumn comboboxColumn;
        comboboxColumn = CreateComboBoxColumn();
        SetAlternateChoicesUsingDataSource(comboboxColumn);
        comboboxColumn.HeaderText = "TitleOfCourtesy (via DataSource property)";
        DataGridView1.Columns.Insert(0, comboboxColumn);

        comboboxColumn = CreateComboBoxColumn();
        SetAlternateChoicesUsingItems(comboboxColumn);
        comboboxColumn.HeaderText = "TitleOfCourtesy (via Items property)";
        // Tack this example column onto the end.
        DataGridView1.Columns.Add(comboboxColumn);
    }

    private void AddLinkColumn()
    {
        DataGridViewLinkColumn links = new DataGridViewLinkColumn();

        links.UseColumnTextForLinkValue = true;
        links.HeaderText = ColumnName.ReportsTo.ToString();
        links.DataPropertyName = ColumnName.ReportsTo.ToString();
        links.ActiveLinkColor = Color.White;
        links.LinkBehavior = LinkBehavior.SystemDefault;
        links.LinkColor = Color.Blue;
        links.TrackVisitedState = true;
        links.VisitedLinkColor = Color.YellowGreen;

        DataGridView1.Columns.Add(links);
    }

    private static void SetAlternateChoicesUsingItems(
        DataGridViewComboBoxColumn comboboxColumn)
    {
        comboboxColumn.Items.AddRange("Mr.", "Ms.", "Mrs.", "Dr.");
    }

    private DataGridViewComboBoxColumn CreateComboBoxColumn()
    {
        DataGridViewComboBoxColumn column =
            new DataGridViewComboBoxColumn();
        {
            column.DataPropertyName = ColumnName.TitleOfCourtesy.ToString();
            column.HeaderText = ColumnName.TitleOfCourtesy.ToString();
            column.DropDownWidth = 160;
            column.Width = 90;
            column.MaxDropDownItems = 3;
            column.FlatStyle = FlatStyle.Flat;
        }
        return column;
    }

    private void SetAlternateChoicesUsingDataSource(DataGridViewComboBoxColumn comboboxColumn)
    {
        {
            comboboxColumn.DataSource = RetrieveAlternativeTitles();
            comboboxColumn.ValueMember = ColumnName.TitleOfCourtesy.ToString();
            comboboxColumn.DisplayMember = comboboxColumn.ValueMember;
        }
    }

    private DataTable RetrieveAlternativeTitles()
    {
        return Populate("SELECT distinct TitleOfCourtesy FROM Employees");
    }

    string connectionString =
        "Integrated Security=SSPI;Persist Security Info=False;" +
        "Initial Catalog=Northwind;Data Source=localhost";

    private DataTable Populate(string sqlCommand)
    {
        SqlConnection northwindConnection = new SqlConnection(connectionString);
        northwindConnection.Open();

        SqlCommand command = new SqlCommand(sqlCommand, northwindConnection);
        SqlDataAdapter adapter = new SqlDataAdapter();
        adapter.SelectCommand = command;

        DataTable table = new DataTable();
        table.Locale = System.Globalization.CultureInfo.InvariantCulture;
        adapter.Fill(table);

        return table;
    }

    // Using an enum provides some abstraction between column index
    // and column name along with compile time checking, and gives
    // a handy place to store the column names.
    enum ColumnName
    {
        EmployeeId,
        LastName,
        FirstName,
        Title,
        TitleOfCourtesy,
        BirthDate,
        HireDate,
        Address,
        City,
        Region,
        PostalCode,
        Country,
        HomePhone,
        Extension,
        Photo,
        Notes,
        ReportsTo,
        PhotoPath,
        OutOfOffice
    };

    private void AddButtonColumn()
    {
        DataGridViewButtonColumn buttons = new DataGridViewButtonColumn();
        {
            buttons.HeaderText = "Sales";
            buttons.Text = "Sales";
            buttons.UseColumnTextForButtonValue = true;
            buttons.AutoSizeMode =
                DataGridViewAutoSizeColumnMode.AllCells;
            buttons.FlatStyle = FlatStyle.Standard;
            buttons.CellTemplate.Style.BackColor = Color.Honeydew;
            buttons.DisplayIndex = 0;
        }

        DataGridView1.Columns.Add(buttons);

    }

    private void AddOutOfOfficeColumn()
    {
        DataGridViewCheckBoxColumn column = new DataGridViewCheckBoxColumn();
        {
            column.HeaderText = ColumnName.OutOfOffice.ToString();
            column.Name = ColumnName.OutOfOffice.ToString();
            column.AutoSizeMode = 
                DataGridViewAutoSizeColumnMode.DisplayedCells;
            column.FlatStyle = FlatStyle.Standard;
            column.ThreeState = true;
            column.CellTemplate = new DataGridViewCheckBoxCell();
            column.CellTemplate.Style.BackColor = Color.Beige;
        }

        DataGridView1.Columns.Insert(0, column);
    }

    private void PopulateSales(DataGridViewCellEventArgs buttonClick)
    {

        string employeeId = DataGridView1.Rows[buttonClick.RowIndex]
            .Cells[ColumnName.EmployeeId.ToString()].Value.ToString();
        DataGridView2.DataSource = Populate("SELECT * FROM Orders WHERE EmployeeId = " + employeeId);
    }

    #region "SQL Error handling"
    private void DataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs anError)
    {

        MessageBox.Show("Error happened " + anError.Context.ToString());

        if (anError.Context == DataGridViewDataErrorContexts.Commit)
        {
            MessageBox.Show("Commit error");
        }
        if (anError.Context == DataGridViewDataErrorContexts.CurrentCellChange)
        {
            MessageBox.Show("Cell change");
        }
        if (anError.Context == DataGridViewDataErrorContexts.Parsing)
        {
            MessageBox.Show("parsing error");
        }
        if (anError.Context == DataGridViewDataErrorContexts.LeaveControl)
        {
            MessageBox.Show("leave control error");
        }

        if ((anError.Exception) is ConstraintException)
        {
            DataGridView view = (DataGridView)sender;
            view.Rows[anError.RowIndex].ErrorText = "an error";
            view.Rows[anError.RowIndex].Cells[anError.ColumnIndex].ErrorText = "an error";

            anError.ThrowException = false;
        }
    }
    #endregion

    private void DataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {

        if (IsANonHeaderLinkCell(e))
        {
            MoveToLinked(e);
        }
        else if (IsANonHeaderButtonCell(e))
        {
            PopulateSales(e);
        }
    }

    private void MoveToLinked(DataGridViewCellEventArgs e)
    {
        string employeeId;
        object value = DataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
        if (value is DBNull) { return; }

        employeeId = value.ToString();
        DataGridViewCell boss = RetrieveSuperiorsLastNameCell(employeeId);
        if (boss != null)
        {
            DataGridView1.CurrentCell = boss;
        }
    }

    private bool IsANonHeaderLinkCell(DataGridViewCellEventArgs cellEvent)
    {
        if (DataGridView1.Columns[cellEvent.ColumnIndex] is
            DataGridViewLinkColumn &&
            cellEvent.RowIndex != -1)
        { return true; }
        else { return false; }
    }

    private bool IsANonHeaderButtonCell(DataGridViewCellEventArgs cellEvent)
    {
        if (DataGridView1.Columns[cellEvent.ColumnIndex] is
            DataGridViewButtonColumn &&
            cellEvent.RowIndex != -1)
        { return true; }
        else { return (false); }
    }

    private DataGridViewCell RetrieveSuperiorsLastNameCell(string employeeId)
    {

        foreach (DataGridViewRow row in DataGridView1.Rows)
        {
            if (row.IsNewRow) { return null; }
            if (row.Cells[ColumnName.EmployeeId.ToString()].Value.ToString().Equals(employeeId))
            {
                return row.Cells[ColumnName.LastName.ToString()];
            }
        }
        return null;
    }

    #region "checkbox state"
    Dictionary<string, bool> inOffice = new Dictionary<string, bool>();
    private void DataGridView1_CellValuePushed(object sender,
        DataGridViewCellValueEventArgs e)
    {
        if (IsCheckBoxColumn(e.ColumnIndex))
        {
            string employeeId = GetKey(e);
            if (!inOffice.ContainsKey(employeeId))
            {
                inOffice.Add(employeeId, (Boolean)e.Value);
            }
            else
            {
                inOffice[employeeId] = (Boolean)e.Value;
            }
        }
    }

    private string GetKey(DataGridViewCellValueEventArgs cell)
    {
        return DataGridView1.Rows[cell.RowIndex].
            Cells[ColumnName.EmployeeId.ToString()].Value.ToString();
    }

    private void DataGridView1_CellValueNeeded(object sender,
        DataGridViewCellValueEventArgs e)
    {

        if (IsCheckBoxColumn(e.ColumnIndex))
        {
            string employeeId = GetKey(e);
            if (!inOffice.ContainsKey(employeeId))
            {
                bool defaultValue = false;
                inOffice.Add(employeeId, defaultValue);
            }

            e.Value = inOffice[employeeId];
        }
    }

    private bool IsCheckBoxColumn(int columnIndex)
    {
        DataGridViewColumn outOfOfficeColumn =
            DataGridView1.Columns[ColumnName.OutOfOffice.ToString()];
        return (DataGridView1.Columns[columnIndex] == outOfOfficeColumn);
    }
    #endregion
}


.NET Framework

Unterstützt in: 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

Es werden nicht alle Versionen sämtlicher Plattformen von .NET Framework unterstützt.. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Alle öffentlichen static (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft