如何在C#中动态创建DataGridView?

时间:2010-03-08 09:39:18

标签: c# winforms datagridview

如何在C#中动态创建DataGridView?你能举个例子吗?

3 个答案:

答案 0 :(得分:6)

您可以像创建任何其他控件一样创建它。

在您的页面中放置一个PLACEHOLDER控件(这将作为起点)

所以你的页面看起来像是

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

然后,在您的代码中,只需创建并添加控件到Place Holder

// 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!

希望它有助于您入门

答案 1 :(得分:4)

根据您的回复, 使用WinForms。首先是一个非常简单的示例,然后根据“典型”使用场景对要考虑的问题进行一些讨论。

这是一个特定的例子,为了响应在运行时点击按钮,创建一个新的DataGridView,定位在Form上,大小等等:

// 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 in in:

简化设置大小和位置
    RunTimeCreatedDataGridView.SetBounds(10,12,300,542);

您可能希望通过设置Dock或Anchor属性来设置“自动”确定大小和位置的其他属性。

您可能希望通过添加调用将BackGroundColor,BorderStyle等设置为上述代码,以其他方式“自定义配置”DataGridView的视觉外观。

到了这个时候,我希望你能想到这样的事情:“真正重要的事情如配置列,数据绑定等等?”通过DataGridView右上角和“属性浏览器”窗口中的“智能标记”在DesignTime中显示的所有精彩功能如何呢。

这是我们获得一般性而非具体性的地方。

如果你“确定”某个时候运行时用户想要创建一个DataGridView:为什么不提前创建它:直观地设置它,创建列等,然后在表格载荷:然后按需显示。

如果您绝对必须在运行时从头开始创建DataGridView,但又想避免大量输入:首先在设计时创建DataGridView,进入Designer.cs文件并复制出自动生成的代码对于视觉样式,添加和配置列非常有用:然后将该代码粘贴到创建DataGridView的方法或事件中(是的,您需要'稍微调整一下)。

因为,在这种情况下,我们对您可能或不可能将DataGridView绑定到什么一无所知,我们只会对那个人保持“妈咪”。

在(奇怪的?关闭机会?)你在运行时创建多个DataGridViews的不太可能的情况,建议你在List<DataGridView>之类的变量中维护它们的内部列表,并有一个名为{{1的变量您可以依赖于保持对当前活动的引用(具有焦点,可见等)DataGridView。

在每种情况下,我建议在设计时模式下使用DataGridView“乱搞”,然后检查Designer.cs文件中生成的代码(但永远不要改变它!),以获得有关如何使用各种各样的快速信息DataGridView的功能。对于将DataGridView绑定到复杂DataSources和格式化的主要示例:请查看CodeProject以获取相关文章,提示等。

从Designer.cs文件中自动生成的代码“收获”您需要的内容,然后,当您准备好时,删除Form上的DataGridView实例,并在运行时“自己做”。

答案 2 :(得分:0)

GridView gv = new GridView();

gv.datasource = dt;

gv.databind();

然后将此gv放在面板或div或table列中。

您可以查看此链接http://www.ehow.com/how_5212306_create-datagridview-c.html