Exportieren (0) Drucken
Alle erweitern
Erweitern Minimieren

DataGridView.AutoGenerateColumns-Eigenschaft

Aktualisiert: November 2007

Ruft einen Wert ab oder legt einen Wert fest, der angibt, ob Spalten automatisch erstellt werden, wenn die DataSource-Eigenschaft oder die DataMember-Eigenschaft festgelegt werden.

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

[BrowsableAttribute(false)]
public bool AutoGenerateColumns { get; set; }
/** @property */
/** @attribute BrowsableAttribute(false) */
public boolean get_AutoGenerateColumns()
/** @property */
/** @attribute BrowsableAttribute(false) */
public  void set_AutoGenerateColumns(boolean value)

public function get AutoGenerateColumns () : boolean
public function set AutoGenerateColumns (value : boolean)

Eigenschaftenwert

Typ: System.Boolean
true, wenn die Spalten automatisch erstellt werden sollen, andernfalls false. Der Standardwert ist true.

Spalten werden automatisch generiert, wenn diese Eigenschaft auf true ist festgelegt ist und die DataSource-Eigenschaft oder die DataMember-Eigenschaft festgelegt sind oder geändert werden. Spalten können auch automatisch generiert werden, wenn die AutoGenerateColumns-Eigenschaft von false in true geändert wird. Wenn diese Eigenschaft true ist und sich die DataSource so ändert, dass Spalten nicht mit den Spalten des vorherigen DataSource-Werts übereinstimmen, werden die Daten in den nicht übereinstimmenden Spalten verworfen. Diese Eigenschaft wird ignoriert, wenn die DataSource-Eigenschaft oder die DataMember-Eigenschaft nicht festgelegt sind.

Wenn AutoGenerateColumns auf true festgelegt ist, generiert das DataGridView-Steuerelement eine Spalte für jede öffentliche Eigenschaft der Objekte in der Datenquelle. Wenn die gebundenen Objekte die ICustomTypeDescriptor-Schnittstelle implementieren, generiert das Steuerelement eine Spalte für jede Eigenschaft, die von der GetProperties-Methode zurückgegeben wird. Jeder Spaltenheader enthält den Wert des Eigenschaftennamens, den die Spalte darstellt.

Wenn Sie die DataSource-Eigenschaft festlegen und AutoGenerateColumns auf false festgelegt haben, müssen Sie die Spalten manuell hinzufügen. Sie können jede hinzugefügte Spalte an die Datenquelle binden, indem Sie die DataGridViewColumn.DataPropertyName-Eigenschaft auf den Namen einer Eigenschaft festlegen, die von den gebundenen Objekten verfügbar gemacht wird.

Das folgende Codebeispiel veranschaulicht, wie manuell Spalten hinzugefügt und an eine Datenquelle gebunden werden, wenn AutoGenerateColumns auf false festgelegt wurde. In diesem Beispiel wird ein DataGridView-Steuerelement an eine Liste von Task-Geschäftsobjekten gebunden. Anschließend werden Spalten hinzugefügt und über die DataGridViewColumn.DataPropertyName-Eigenschaft an Task-Eigenschaften gebunden. Dieses Beispiel ist Teil eines umfangreicheren Beispiels in Gewusst wie: Zugreifen auf Objekte in einer Windows Forms-DataGridViewComboBoxCell-Dropdownliste.

public class Form1 : Form
{
    private List<Employee> employees = new List<Employee>();
    private List<Task> tasks = new List<Task>();
    private Button reportButton = new Button();
    private DataGridView dataGridView1 = new DataGridView();

    [STAThread]
    public static void Main()
    {
        Application.Run(new Form1());
    }

    public Form1()
    {
        dataGridView1.Dock = DockStyle.Fill;
        dataGridView1.AutoSizeColumnsMode = 
            DataGridViewAutoSizeColumnsMode.AllCells;
        reportButton.Text = "Generate Report";
        reportButton.Dock = DockStyle.Top;
        reportButton.Click += new EventHandler(reportButton_Click);

        Controls.Add(dataGridView1);
        Controls.Add(reportButton);
        Load += new EventHandler(Form1_Load);
        Text = "DataGridViewComboBoxColumn Demo";
    }

    // Initializes the data source and populates the DataGridView control.
    private void Form1_Load(object sender, EventArgs e)
    {
        PopulateLists();
        dataGridView1.AutoGenerateColumns = false;
        dataGridView1.DataSource = tasks;
        AddColumns();
    }

    // Populates the employees and tasks lists. 
    private void PopulateLists()
    {
        employees.Add(new Employee("Harry"));
        employees.Add(new Employee("Sally"));
        employees.Add(new Employee("Roy"));
        employees.Add(new Employee("Pris"));
        tasks.Add(new Task(1, employees[1]));
        tasks.Add(new Task(2));
        tasks.Add(new Task(3, employees[2]));
        tasks.Add(new Task(4));
    }

    // Configures columns for the DataGridView control.
    private void AddColumns()
    {
        DataGridViewTextBoxColumn idColumn = 
            new DataGridViewTextBoxColumn();
        idColumn.Name = "Task";
        idColumn.DataPropertyName = "Id";
        idColumn.ReadOnly = true;

        DataGridViewComboBoxColumn assignedToColumn = 
            new DataGridViewComboBoxColumn();

        // Populate the combo box drop-down list with Employee objects. 
        foreach (Employee e in employees) assignedToColumn.Items.Add(e);

        // Add "unassigned" to the drop-down list and display it for 
        // empty AssignedTo values or when the user presses CTRL+0. 
        assignedToColumn.Items.Add("unassigned");
        assignedToColumn.DefaultCellStyle.NullValue = "unassigned";

        assignedToColumn.Name = "Assigned To";
        assignedToColumn.DataPropertyName = "AssignedTo";
        assignedToColumn.AutoComplete = true;
        assignedToColumn.DisplayMember = "Name";
        assignedToColumn.ValueMember = "Self";

        // Add a button column. 
        DataGridViewButtonColumn buttonColumn = 
            new DataGridViewButtonColumn();
        buttonColumn.HeaderText = "";
        buttonColumn.Name = "Status Request";
        buttonColumn.Text = "Request Status";
        buttonColumn.UseColumnTextForButtonValue = true;

        dataGridView1.Columns.Add(idColumn);
        dataGridView1.Columns.Add(assignedToColumn);
        dataGridView1.Columns.Add(buttonColumn);

        // Add a CellClick handler to handle clicks in the button column.
        dataGridView1.CellClick +=
            new DataGridViewCellEventHandler(dataGridView1_CellClick);
    }

    // Reports on task assignments. 
    private void reportButton_Click(object sender, EventArgs e)
    {
        StringBuilder report = new StringBuilder();
        foreach (Task t in tasks)
        {
            String assignment = 
                t.AssignedTo == null ? 
                "unassigned" : "assigned to " + t.AssignedTo.Name;
            report.AppendFormat("Task {0} is {1}.", t.Id, assignment);
            report.Append(Environment.NewLine);
        }
        MessageBox.Show(report.ToString(), "Task Assignments");
    }

    // Calls the Employee.RequestStatus method.
    void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        // Ignore clicks that are not on button cells. 
        if (e.RowIndex < 0 || e.ColumnIndex !=
            dataGridView1.Columns["Status Request"].Index) return;

        // Retrieve the task ID.
        Int32 taskID = (Int32)dataGridView1[0, e.RowIndex].Value;

        // Retrieve the Employee object from the "Assigned To" cell.
        Employee assignedTo = dataGridView1.Rows[e.RowIndex]
            .Cells["Assigned To"].Value as Employee;

        // Request status through the Employee object if present. 
        if (assignedTo != null)
        {
            assignedTo.RequestStatus(taskID);
        }
        else
        {
            MessageBox.Show(String.Format(
                "Task {0} is unassigned.", taskID), "Status Request");
        }
    }

}


Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5, 3.0, 2.0

Community-Beiträge

HINZUFÜGEN
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2015 Microsoft