Arhn - архитектура программирования

Нечетное поведение дисплея DataGridView при попытке очистить

У меня есть DataGridView, привязанный к DataTable.

Позже я добавлю новую колонку кнопок прямо в DGV. В следующий раз, когда я обновляю таблицу, я хочу удалить все предыдущие данные из DGV.

Для таблицы я просто делаю var table = new DataTable();, но делаю это с помощью DataGridView, когда DGV определен как локальный внутри метода, поэтому он никогда не отображается в форме.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //dataGridView1 = new DataGridView(); //<-- uncommenting this line breaks the form's dgv from displaying anything

            DataTable table = new DataTable();
            table.Columns.Add("C_" + table.Columns.Count);
            table.Rows.Add("R1");
            table.Rows.Add("R2");
            dataGridView1.DataSource = table;

            DataGridViewButtonColumn oCol = new DataGridViewButtonColumn();
            oCol.Name = "Buttons";
            oCol.Text = "(...)";
            oCol.UseColumnTextForButtonValue = true;
            dataGridView1.Columns.Add(oCol);
        }
    }
}

Это ошибка или как мне правильно обновить / сбросить / очистить dgv?

РЕДАКТИРОВАТЬ:

Приведенный выше фрагмент кода был изменен по сравнению с оригиналом. Раскомментируйте строку в коде, чтобы увидеть другое поведение button1 в режиме выполнения.


  • Я попробовал ваш код и позвонил dataGridView1.Columns.Clear();, и все в порядке. 12.01.2013
  • @spajce Проблема заключалась в том, что я пытался очистить dgv с помощью команды 'new DataGridView', но это не сработало. Dgv не может показать ячейки, даже если они есть. Это была ошибка, о которой я упоминал. Решением было использовать dataGridView1.Columns.Clear (); вместо того, чтобы пытаться сделать новый dgv, как предлагал scartag. 12.01.2013

Ответы:


1
dataGridView1.DataSource = null;

или вы можете очистить столбцы / строки.

dataGridView1.Rows.Clear();
dataGridView1.Columns.Clear();
11.01.2013
  • ах, «ошибка» этим не исправляется, однако все, что мне нужно, это dataGridView1.Columns.Clear (); метод. Я мог бы поклясться, что я уже пробовал это и не видел метода, но он есть, и это то, что мне нужно. 12.01.2013

  • 2

    Думаю, это не ошибка. Но, к сожалению, не могу объяснить :)

    Просто используйте Controls.Add(..)

        DataGridView dgv = new DataGridView(); 
        private void button1_Click(object sender, EventArgs e)
        {
            DataTable table = new DataTable();
            table.Columns.Add("C_" + table.Columns.Count);
            table.Rows.Add("R1");
            table.Rows.Add("R2");
            dgv.DataSource = table;
    
            DataGridViewButtonColumn oCol = new DataGridViewButtonColumn();
            oCol.Name = "Buttons";
            oCol.Text = "(...)";
            oCol.UseColumnTextForButtonValue = true;
            dgv.Columns.Add(oCol);
    
            Controls.Add(dgv); //<--Try to check this.
        }
    
        private void button2_Click(object sender, EventArgs e)
        {
            dgv.Columns.Clear();
        }
    
    12.01.2013
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..