Как мне динамически создать DataGridView в C #? - PullRequest
2 голосов
/ 08 марта 2010

Как мне динамически создать DataGridView в C #? Не могли бы вы привести пример?

Ответы [ 3 ]

6 голосов
/ 08 марта 2010

Вы можете создать его как любой другой элемент управления.

поместите элемент управления PLACEHOLDER на вашу страницу (это будет отправной точкой)

так ваша страница выглядит как

<body>
    <form id="form" runat="server" />
    <asp:PlaceHolder id="ph" runat="server" />
</body>

Затем в своем коде просто создайте и добавьте элементы управления для метки-заполнителя

// Let's create our Object That contains the data to show in our Grid first
string[] myData = new string[] { "A", "B", "C", "D", "E", "F", "G", "H", "I" };

// Create the Object
GridView gv = new GridView();

// Assign some properties
gv.ID = "myGridID";
gv.AutoGenerateColumns = true;

// Assing Data (this can be a DataTable or you can create each column through Columns Colecction)
gv.DataSource = myData;
gv.DataBind();

// Now that we have our Grid all set up, let's add it to our Place Holder Control
ph.Controls.Add(gv);

Может быть, вы хотите добавить больше элементов управления?

// How about adding a Label as well?
Label lbl = new Label;
lbl.ID = "MyLabelID";
lbl.Text = String.Format("Grid contains {0} row(s).", myData.Length);

ph.Controls.Add(lbl);

// Done!

Надеюсь, это поможет вам начать

4 голосов
/ 09 марта 2010

На основании вашего ответа, что вы используете WinForms. Сначала очень простой пример, а затем небольшое обсуждение вопросов для рассмотрения на основе «типичных» сценариев использования.

Вот конкретный пример, где в ответ на щелчок по кнопке во время выполнения создается новый DataGridView, помещается в форму, размер и т. Д.:

// declare a form scoped variable to hold a reference
// to the run-time created DataGridview
private DataGridView RunTimeCreatedDataGridView;

// sample of creating the DataGridView at run-time
// and adding to the Controls collection of a Form
// and positioning and sizing
// fyi: the Form used here is sized 800 by 600
private void button1_Click(object sender, EventArgs e)
{
    RunTimeCreatedDataGridView= new DataGridView();
    RunTimeCreatedDataGridView.Size = new Size(300, 542);
    RunTimeCreatedDataGridView.Location = new Point(10,12);
    this.Controls.Add(RunTimeCreatedDataGridView);
}

Конечно, вы можете упростить настройку размера и местоположения, используя свойство Bounds или метод SetBounds, как в:

    RunTimeCreatedDataGridView.SetBounds(10,12,300,542);

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

И вам, вероятно, захочется «настраивать» внешний вид DataGridView другими способами, добавляя вызовы для установки BackGroundColor, BorderStyle и т. Д. В приведенный выше код.

К этому времени я надеюсь, что вы думаете о чем-то вроде: "как насчет действительно важных вещей, таких как настройка столбцов, привязка данных и т.д.?" Как насчет всей этой замечательной функциональности, предоставляемой в DesignTime «Смарт-тегом» в правом верхнем углу DataGridView и в окне обозревателя свойств.

Здесь мы получаем общее, а не конкретное.

Если вы «уверены», что в какой-то момент пользователь во время выполнения захочет создать DataGridView: почему бы не создать его заранее: визуально оформить его, создать столбцы и т. Д., А затем скрыть, когда Форма нагрузки: затем показать по требованию.

Если вам абсолютно необходимо создать DataGridView с нуля во время выполнения, но вы хотите избежать многократного ввода: сначала создайте DataGridView во время разработки, перейдите в файл Designer.cs и скопируйте автоматически сгенерированный код, который полезно для визуального стиля, добавления и настройки столбцов: затем вставьте этот код в метод или событие, где вы создаете DataGridView (да, вам нужно немного его настроить).

Поскольку в этом случае мы ничего не знаем о том, с чем вы могли бы или не могли связывать DataGridView, мы просто будем молчать об этом.

В (нечетном? Выключенном?) Маловероятном случае, когда вы создаете несколько DataGridViews во время выполнения, предложите вам поддерживать их внутренний список в переменной типа List<DataGridView> и иметь одну переменную с именем currentDataGridView, которую может полагаться на то, что удерживает ссылку на активный в данный момент (имеет фокус, видим и т. д.) DataGridView.

В каждом случае я рекомендую использовать «возиться» с DataGridView в режиме времени разработки, а затем исследовать код, созданный в файле Designer.cs (но никогда не меняя его!), Чтобы получить быструю информацию о том, как использовать различные особенности DataGridView. Основные примеры привязки DataGridView к сложным источникам данных и форматирования: ознакомьтесь с CodeProject, чтобы найти соответствующие статьи, советы и т. Д.

«Соберите» то, что вам нужно, из автоматически сгенерированного кода в файле Designer.cs, а затем, когда вы будете готовы, удалите экземпляр DataGridView в форме и «сделайте свое дело» во время выполнения.

0 голосов
/ 08 марта 2010
GridView gv = new GridView();

gv.datasource = dt;

gv.databind();

и затем поместите этот gv в панель, div или таблицу.

Вы можете проверить эту ссылку http://www.ehow.com/how_5212306_create-datagridview-c.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...