如何在C#中动态创建DataGridView?你能举个例子吗?
答案 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